{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "653089c9",
   "metadata": {},
   "source": [
    "# Chapter 11: Building A Generative Pre-Trained Transformer (GPT) from Scratch\n",
    "\n",
    "This chapter covers\n",
    "\n",
    "* How to build a generative pre-trained Transformer (GPT) from scratch\n",
    "* How causal self-attention works\n",
    "* How to extract model weights from a pre-trained model and load them to your own\n",
    "* Generating coherent text using GPT-2, the predecessor of ChatGPT and GPT-4\n",
    "\n",
    "Generative Pre-trained Transformer 2 (GPT-2) is an advanced large language model (LLM) developed by OpenAI and announced in February 2019. It represents a significant milestone in the field of natural language processing (NLP) and has paved the way for the development of even more sophisticated models, including its successors, ChatGPT and GPT-4. \n",
    "\n",
    "GPT-2 was introduced in 2018 as an improvement over its predecessor, GPT-1. GPT-2 was designed to generate coherent and contextually relevant text based on a given prompt, demonstrating a remarkable ability to mimic human-like text generation across various styles and topics. Upon its announcement, OpenAI initially decided not to release to the public the most powerful version of GPT-2 (also the one you’ll build from scratch in this chapter, with 1.5 billion parameters). The main concern was potential misuse, such as generating misleading news articles, impersonating individuals online, or automating the production of abusive or fake content. This decision sparked a significant debate within the AI and tech communities about the ethics of AI development and the balance between innovation and safety.\n",
    "\n",
    "OpenAI later adopted a staggered release strategy, gradually making smaller versions of the model available while monitoring the impact and exploring safe deployment strategies. Eventually, in November 2019, OpenAI released the full model, along with several datasets and a tool to detect model-generated text, contributing to discussions on responsible AI usage. Because of this release, you’ll learn to extract the pre-trained weights from GPT-2 and load them to the GPT-2 model that you create.\n",
    "\n",
    "GPT-2 is based on the Transformer architecture that we discussed in Chapters 9 and 10. However, unlike the English-to-French translator you created before, GPT-2 is a decoder-only Transformer, meaning there is no encoder stack in the model. When translating an English phrase into French, the encoder captures the meaning of the English phrase and passes it to the decoder to generate the translation. However, in text generation tasks, the model does not need an encoder to understand a different language. Instead, it generates text based on the previous tokens in the sentence.   Like other Transformer models, GPT-2 uses self-attention mechanisms to process input data in parallel, significantly improving the efficiency and effectiveness of training large language models. \n",
    "\n",
    "GPT-2 is pre-trained on a large corpus of text data, essentially predicting the next word in a sentence given the words that precede it. This training enables the model to learn a wide range of language patterns, grammar, and knowledge. \n",
    "\n",
    "In this chapter, you’ll learn to build GPT-2XL, the largest version of GPT-2, from scratch. After that, you’ll learn how to extract the pre-trained weights from Hugging Face (an AI community that hosts and collaborates on ML models, datasets, and applications) and load them to your own GPT-2 model. You’ll use your GPT-2 to generate text by feeding a prompt to the model. GPT-2 calculates the probabilities of possible next tokens and samples from these probabilities. It can produce coherent and contextually relevant paragraphs of text based on the input prompt it receives. Additionally, as you did in Chapter 8, you can control the creativeness of the generated text by using temperature and top-K sampling. \n",
    "\n",
    "While GPT-2 marks a notable advance in NLP, it's essential to moderate your expectations and recognize its inherent limitations. It's crucial not to compare GPT-2 with ChatGPT or GPT-4 directly, as GPT-2XL has only 1.5 billion parameters compared to ChatGPT's 175 billion and GPT-4's estimated 1.76 trillion parameters.  One of the main limitations of GPT-2 is its lack of genuine comprehension of the content it generates. The model predicts the next word in a sequence based on the probability distribution of words in its training data, which can produce syntactically correct and seemingly logical text. However, the model lacks a true understanding of the meaning behind the words, leading to potential inaccuracies, nonsensical statements, or superficial content.\n",
    "\n",
    "Another key issue is GPT-2's limited contextual awareness. While it can maintain coherence over short spans of text, it struggles with longer passages, potentially resulting in a loss of coherence, contradictions, or irrelevant content. We should be cautious not to overestimate the model's ability to generate long-form content that requires sustained attention to context and detail. Therefore, while GPT-2 represents a significant step forward in NLP, it's important to approach its generated text with a healthy dose of skepticism and set realistic expectations. "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7d58fa75",
   "metadata": {},
   "source": [
    "# 1.\tGPT-2 Architecture and Causal Self-Attention\n",
    "## 1.1.\tThe architecture of GPT-2\n",
    "## 1.2.\tWord embedding and positional encoding in GPT-2"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "49d66838",
   "metadata": {},
   "source": [
    "## 1.3.\tCausal Self-Attention in GPT-2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "62e7e5c4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "the shape of Q vector is torch.Size([1, 4, 1600])\n",
      "the shape of K vector is torch.Size([1, 4, 1600])\n",
      "the shape of V vector is torch.Size([1, 4, 1600])\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "\n",
    "torch.manual_seed(42)\n",
    "x=torch.randn((1,4,1600))\n",
    "c_attn=nn.Linear(1600,1600*3)\n",
    "B,T,C=x.size()\n",
    "q,k,v=c_attn(x).split(1600,dim=2)\n",
    "print(f\"the shape of Q vector is {q.size()}\")\n",
    "print(f\"the shape of K vector is {k.size()}\")\n",
    "print(f\"the shape of V vector is {v.size()}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "2c239f8a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "the shape of Q vector is torch.Size([1, 25, 4, 64])\n",
      "the shape of K vector is torch.Size([1, 25, 4, 64])\n",
      "the shape of V vector is torch.Size([1, 25, 4, 64])\n"
     ]
    }
   ],
   "source": [
    "hs=C//25\n",
    "k = k.view(B, T, 25, hs).transpose(1, 2) \n",
    "q = q.view(B, T, 25, hs).transpose(1, 2) \n",
    "v = v.view(B, T, 25, hs).transpose(1, 2) \n",
    "print(f\"the shape of Q vector is {q.size()}\")\n",
    "print(f\"the shape of K vector is {k.size()}\")\n",
    "print(f\"the shape of V vector is {v.size()}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "43119d35",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[ 0.2334,  0.1385, -0.1305,  0.2664],\n",
      "        [ 0.2916,  0.1044,  0.0095,  0.0993],\n",
      "        [ 0.8250,  0.2454,  0.0214,  0.8667],\n",
      "        [-0.1557,  0.2034,  0.2172, -0.2740]], grad_fn=<SelectBackward0>)\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "scaled_att = (q @ k.transpose(-2, -1)) *\\\n",
    "            (1.0 / math.sqrt(k.size(-1)))\n",
    "print(scaled_att[0,0]) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "4205fcd9",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[-0.1720, -0.2462, -0.5019,  0.1796],\n",
      "        [-0.1566,  0.3681, -0.2610,  0.1355],\n",
      "        [ 0.4394, -0.5173, -0.1076, -0.3687],\n",
      "        [-0.0101,  0.6201,  0.3146, -0.0139]], grad_fn=<SelectBackward0>)\n"
     ]
    }
   ],
   "source": [
    "# answer to exercise 11.1\n",
    "# print out the scaled attention scores in the second head\n",
    "print(scaled_att[0,1]) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "3b7471fd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[1., 0., 0., 0.],\n",
      "        [1., 1., 0., 0.],\n",
      "        [1., 1., 1., 0.],\n",
      "        [1., 1., 1., 1.]])\n",
      "tensor([[ 0.2334,    -inf,    -inf,    -inf],\n",
      "        [ 0.2916,  0.1044,    -inf,    -inf],\n",
      "        [ 0.8250,  0.2454,  0.0214,    -inf],\n",
      "        [-0.1557,  0.2034,  0.2172, -0.2740]], grad_fn=<SelectBackward0>)\n"
     ]
    }
   ],
   "source": [
    "mask=torch.tril(torch.ones(4,4))\n",
    "print(mask)\n",
    "masked_scaled_att=scaled_att.masked_fill(\\\n",
    "    mask == 0, float('-inf'))\n",
    "print(masked_scaled_att[0,0]) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "af4eabd2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[1.0000, 0.0000, 0.0000, 0.0000],\n",
      "        [0.5467, 0.4533, 0.0000, 0.0000],\n",
      "        [0.4980, 0.2790, 0.2230, 0.0000],\n",
      "        [0.2095, 0.3001, 0.3042, 0.1862]], grad_fn=<SelectBackward0>)\n"
     ]
    }
   ],
   "source": [
    "import torch.nn.functional as F\n",
    "att = F.softmax(masked_scaled_att, dim=-1)\n",
    "print(att[0,0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "5bb225bc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[1.0000, 0.0000, 0.0000, 0.0000],\n",
      "        [0.4055, 0.5945, 0.0000, 0.0000],\n",
      "        [0.3726, 0.3248, 0.3026, 0.0000],\n",
      "        [0.2666, 0.1902, 0.3133, 0.2298]], grad_fn=<SelectBackward0>)\n"
     ]
    }
   ],
   "source": [
    "# answer to exercise 11.2\n",
    "# print out the attention weights in the last head\n",
    "print(att[0,-1]) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "61382776",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 4, 1600])\n"
     ]
    }
   ],
   "source": [
    "y=att@v\n",
    "y = y.transpose(1, 2).contiguous().view(B, T, C)\n",
    "print(y.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c268aecc",
   "metadata": {},
   "source": [
    "# 2.\tBuild GPT-2XL from scratch\n",
    "\n",
    "## 2.1. \tByte pair encoder (BPE) tokenization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "fbfb8bd9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['This', ' is', ' the', ' original', ' text', '.']\n"
     ]
    }
   ],
   "source": [
    "from utils.bpe import get_encoder\n",
    "\n",
    "example=\"This is the original text.\"\n",
    "bpe_encoder=get_encoder()\n",
    "response=bpe_encoder.encode_and_show_work(example)\n",
    "print(response[\"tokens\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "c57af8c2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1212, 318, 262, 2656, 2420, 13]\n"
     ]
    }
   ],
   "source": [
    "print(response['bpe_idx'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "d9d786ec",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "This is the original text.\n"
     ]
    }
   ],
   "source": [
    "from utils.bpe import BPETokenizer \n",
    "\n",
    "tokenizer = BPETokenizer()\n",
    "out=tokenizer.decode(torch.LongTensor(response['bpe_idx']))   \n",
    "print(out)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "6630782c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['this', ' is', ' a', ' prompt']\n",
      "[5661, 318, 257, 6152]\n",
      "this is a prompt\n"
     ]
    }
   ],
   "source": [
    "# answer to exercise 11.3\n",
    "# split the phrase \"this is a prompt\" into tokens\n",
    "example=\"this is a prompt\"\n",
    "bpe_encoder=get_encoder()\n",
    "response=bpe_encoder.encode_and_show_work(example)\n",
    "print(response[\"tokens\"])\n",
    "# After that, map the tokens to indexes\n",
    "print(response['bpe_idx'])\n",
    "# Finally, restore the phrase based on the indexes \n",
    "out=tokenizer.decode(torch.LongTensor(response['bpe_idx']))   \n",
    "print(out)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d8e0b2e3",
   "metadata": {},
   "source": [
    "## 2.2.\tThe GELU activation function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "5a3bce99",
   "metadata": {},
   "outputs": [],
   "source": [
    "class GELU(nn.Module):\n",
    "    def forward(self, x):\n",
    "        return 0.5*x*(1.0+torch.tanh(math.sqrt(2.0/math.pi)*\\\n",
    "                       (x + 0.044715 * torch.pow(x, 3.0))))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "36f17e3d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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/tihO6cTEhIyveM4/Xty3759Fmt3uZq1KaK/+OILu6eqW7Zsmd5++22L8v/85z/Zjs1VRo0apX/++cehtmfOnNGCBQvMysLCwrL8fQDAc0jyAADgBoULF9acOXMsTnItXrxYDRo00MyZM+06CRAfH6/ff/9d/fr1U4UKFfTRRx/lutvoCxUqZPWK3VGjRskwDIvyvHLsXn31VYsrA+Pi4tS1a1e98847io6OzrC9YRj69ddf1aRJE4tFm319ffXjjz86PWZrevfubVHWp0+fDOdCj4uL0/vvv6/u3bsrLi5OkuUCyblB//79Lea+P3/+vFq2bJnh2ioRERHq3Llz2rzv+fLlc2WYmQoPD7c6ddjff/+tsLAwDRgwQDt37rT6frUmMTFRy5YtU6dOnTR27Fhnh3tX6d27t8WdKqmpqRo8eLBeeOEFnT9/PtM+Vq9erebNm1t9zX3//fcufX3ZWiPHGVO13dG1a1eLaTwXLlxoNUng6+uruXPnyt/f36x83bp1atiwoX755ZdMX8c3b97U3Llz1bJlSw0ePDjDujVr1rT47Pr4448VHh6e9tnmKeljj42NVd++fS3qZXWqNknq1KmTxfRMP//8s55++ukM75pasWKFmjVrpm3btkly/HM/Jxx3k8mkyZMnW0wR9fvvv6tDhw46duyYzbb//POPmjdvrt27d5uVBwUF6bvvvnNJvHnRfffdp7CwMLOyHTt26OGHH1ZUVJTNdmvWrFGzZs3SflulX38pN2jbtq3FnfSGYeg///mPevXqpSNHjmTax8mTJ/XRRx8pNDRUy5Yty7Bu+jVrUlNT9eijj6a9193hvvvu05AhQyzi6N+/v0aNGqXExESr7VJSUvTFF1+oZ8+eFnV69uxpdfq7nOK3335T06ZN1bRpU33zzTeKiIiwq92mTZv0wAMPKDY21qzcmd/dAFzPdZOyAwAAM23bttW3336rF154waz8+PHj6tevn/7zn/+odevWatCggYoVK6aCBQvq+vXriomJ0YkTJ7R9+3bt2rXL4yeKnOHll1/Wl19+qStXrqSV7d69W7/++qt69eplUT8nHbtt27apbt262e7niSeeMLtqPyAgQPPmzVODBg3MrhRNSkrSRx99pK+++kotWrTQ/fffr5IlS6pIkSK6deuWoqKitHv3bq1evdrmP+a++OILNW3aNNsx22PAgAH6+OOPze5IuXHjhh599FHVr19fXbt2VZUqVeTr66vLly9r+/btWrx4sa5evZpWv0aNGurSpYs+/fRTt8TsLHdO8qX/G547d05dunRR3bp11a1bN1WsWFH+/v66cOGC1q1bp+XLl5tNP/j+++9bvaPDXfz9/bV06VL169fPIjmXkpKi6dOna/r06SpatKhat26tGjVqqGjRoipatKgCAgJ048YNxcbG6sSJEzp06JA2btxoc10ZX19fi6me7PX000+rYMGCDrX9t9KlS2f5qv/z58875XOgTZs2ZlMrmkwmTZ8+XQ0aNLC4a2TChAmaPHmymjVrphYtWqhMmTIKDg5WYmKioqKidPDgQa1evdrmybrhw4frkUceyXbMGVm7dq3FnWtVq1ZVkyZNnDaGv7+/Hn30UbPEdVJSkqZPn271yu2GDRtq3LhxevbZZ80SOsePH1fv3r1VtmxZdezYUbVq1VJISIh8fHwUExOjkydPaseOHdq4cWPa3RWtWrXKMDZfX1/169dP48ePTyu7efOmBg8erKefflrlypVToUKFLKZOe//999WtWzeHjoe9unfvruDgYLOT2QcPHjSr06BBA6t3xWSmSJEiGjZsmN5//32z8smTJ+u3335L+/wvUqRI2vfy4sWLtXfv3rS63t7e+uabbzJNpFmTU477fffdp5EjR1rcNbFmzRrde++9atu2rR544AGVKVNGKSkpOnPmjJYuXapNmzZZJBtNJpMmTpyo8uXLOy0+SGPGjLE4Sb948WJVrlxZvXr1UqNGjVSkSBHFxsbq2LFjWr58uXbu3JlWt3nz5qpQoYJmzpzp7tCz7dNPP9XOnTstppH99ddftWDBAjVs2FBt27ZVhQoVFBwcrPj4eEVFRWnfvn3aunWrRRIyI9Y+b/755x81atRIhQoVUunSpa0my3bt2uXw87Pmiy++0Pr167Vv3760suTkZI0ePVoTJkxQz549Vbt2bYWEhCg6OloHDhzQ/PnzdfbsWYu+ypUr57YLprLrn3/+0T///KOhQ4eqWrVqqlu3rmrVqqVixYopKChIkhQTE6MjR45ozZo12rFjh0UfVatWtXqHOoAczAAAIIdZs2aNIcns0apVq2z3W6FCBbM+Bw4c6FA/I0eOtIgvK+bNm2cUKlTIog9HH7/88otDz8Ne1v4ejh67f/vss88s+q1Zs6aRkpJis427j93JkyedNlb6x6uvvmp1zH379hlVq1Z1yhh+fn7GhAkTsvNncsiOHTuM/PnzOxRzmTJljJMnTzr8PkvfZuTIkQ49h4EDB5r1U6FCBbvbbtmyxQgMDHTo+Y8YMcLq627q1KkOPY/sGjdunFGgQAGXvAd69OhhHDlyxK440v89nPmw52/rqrG7d+9udbwzZ84YjRs3dsoYJpPJeO+994zU1NQs/OUd88QTT1iMP3r0aKePs3btWotxatSokWGbOXPmGPny5cvWsbTnt8iFCxeMkiVLZqlfW+/v7HwOWfPSSy9lGMe4ceMc7jsxMdFo2bKlw6/RiRMnZuuzLycd99GjR2frdebr62vMmDHD7vGs/U5bs2ZNlmK+w1m/lbNi6tSpFvE7+t1tj8GDBzv0dwkLCzOuXLni0OvDmd/rrVq1yvLn0h1xcXFG3759s/X6tDf28PDwLPdrS3ZeH5cvX87292lYWJhx+vRpu8d01md3Vt/bderUyfbfVpJRtmxZY9++fQ7FDMBzmK4NAAA3e+SRR7Rt27YsL2ycno+Pj7p06aLatWs7KTL3evHFF1WiRAmzsn379unnn3+22SYvHLsaNWpo69atevrpp+Xn5+dwP40bN9a6dev0/PPPOzE6+9SrV0/Lly/P8h0aTZs21ebNmxUaGuqawNykUaNGWr16tWrUqGF3G29vb33wwQc57u6lF198UUePHtVzzz3nlGm+ChQooH79+mnDhg1asGABa03YULZsWf31118aMWKEChQo4HA/YWFhWrRokUaPHi2TyeTECC3FxMTo119/tSh3xXQvLVu2tLjDYf/+/RmuRdCnTx9t2LDBYt2wrEj/nWVNyZIltXr1aotF3nOCjO6S8ff31+OPP+5w376+vlq4cGGWv5+DgoL0888/69lnn3V4bClnHff33ntPs2fPVunSpbPc9t5779XKlSv1xBNPuCAySNIPP/ygZ555Jktt2rdvrw0bNuT6RegDAgI0a9YsfffddypevLhDffj4+FisrWnNwIED9eOPP1pM5ehuxYoV05o1a/T8889neW04k8mkxx9/XBs3bswVd9WVLFky23107dpVmzdvztJvWAA5A0keAAA84J577tGiRYu0e/duPfPMM6pYsaJd7YoWLapevXpp4sSJOnfunBYtWqR77rnHxdG6Rv78+a0uzDx69GilpqbabJcXjl1gYKB++OEHnThxQm+88Ybq1KljMc2MNSVLllSfPn20evVq/fPPP26bos2aO+sLjBgxIm1qCFsaNmyoadOmaePGjSpbtqx7AnSx+vXra+fOnfrss88yfJ35+vqqZ8+e2rp1q9555x03Rmi/UqVK6fvvv9fZs2c1YcIEq+tv2GIymVS1alX17dtX06ZN08WLFzV9+nTdf//9Lo469/P399enn36qiIgIffjhh2rcuLFdCyAHBwerW7duWrBggfbv36/OnTu7IVpp1qxZio+PNytr1qyZKlWq5PSxTCaT1ZPgkydPzrBd/fr1tX79ei1btkw9e/a0WNvHmnLlyumZZ57RunXrNHfuXLviCwsL09atW7Vu3ToNHTpUbdq0UdmyZVW4cGGLNVvcqX79+jYvbujRo4eKFCmSrf4DAwO1cOFCzZw5M9OLKIoXL67XX39dhw8ftjpNqyNy0nF/7LHHdOzYMX322WeqV69ehklWHx8fNW/eXD/++KP27NmT6bSAyB5vb29NmjRJK1eu1H333Zfh36ZOnTqaMWOGVqxYoeDgYDdG6VovvfSSTpw4oc8++0yNGzfO9Deml5eXmjRpog8++ECnTp1S165d7Rrnqaee0rlz5zR16lT1799f9erVU/Hixd2+9mD+/Pk1YcIE7du3T08++WSmyZDg4GD17dtX27dv18yZM7P92eguy5Yt04EDB/T555+rS5cudiclAwMDNXDgQK1bt04LFy5UmTJlXBwpAFcwGYadK6YCAACXioiI0J49exQZGamrV68qPj5eBQsWVOHChVW+fHlVr16dH9025IVjd+3aNW3btk2XLl1SdHS0YmJilC9fPhUpUkRFixbVvffeqypVqng6TKtSUlK0bds27d+/X5GRkUpOTlahQoVUsWJFNWzY0ClXHuZ0e/fu1YEDB3T+/HnFxcUpMDBQVatWVdOmTR1ebNyTUlNTdeTIER07dkxnz57V9evXFR8fr/z58ysoKEhBQUEqVqyY6tSpY9eJdNjn1q1b2rZtmy5cuKCoqCjFxMTI19dXRYoUUXBwsKpWraoaNWq4/K6du0VKSoq2b9+uU6dOKTIyUtHR0fL391ehQoUUGhqqsLCwXHH1dk4VERGhv//+W5cuXVJsbKwCAgJUunRp1ahRQ7Vr185Tr9NLly5p69atunz5sq5cuSJvb28V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0U/qpQCl8Z7vd96RRo7Mlv6AtLg15ElMTNTevXu1d+9ezZ492z5esmTJFMFP5cqV3dhpznT16lV17NhRu3fvto8VKlRIK1euVLVq1Zy61tGjR1OERkeOHFH58uVTrT9z5oy+/PJLDR8+XIULF073Gj169NCpU6fsYzabTW+99VZm2wYAAAAAAACQg/32mxnwXL5sXjfTL1qsrgpUnPVDY8ZIt/yiOeAubg15bmYY/7y46syZM4qMjNTy5cvtY0FBQapVq5ZD8FOrVi0FBga6o90coVu3bineXTNixAidP39eq1evztBcDRo0SHcYkx5xcXF6++239dFHH6lbt27q3bu37r33Xt15550pag8ePKjp06fr888/1+XkP43/9vzzz6t+/fpO6wsAAAAAAABAzrB1qxnwXLliXt+rzVqqLsqnGOuHRo2S3n47exoE0sHtIc/N4Y7NZrO8Fx0drS1btmjLli32MR8fH457y4L169enGHvjjTcyNde6devUsmXLrDWUiujoaM2cOVMzZ86UJBUtWlTFixdXgQIFFBMTozNnzujcuXOpPvvQQw9pwoQJTu8JAAAAAAAAgHfbskXq0OGfgKeBtmm5Oiq/oq0feu456YMPpFs+xwbcya0hz5kzZxQWFqawsDCFh4crLCxMhw4dSjP4kf4JfxITE7Vnz550HfeWlJTk+h8ILnfhwgVduHAhzZo8efJo3LhxeuGFF1L97w8AAAAAAACA3GvzZjPguXrVvK6tCK1UexXUFeuHnn5a+uQTAh54HLeGPCVKlFDHjh3VsWNH+1h0dLQiIiLsoU94eLh2796tuDjHMxDT2vWT2nFvfn5+stlsDnXwXCVKlNAnn3yidevWafPmzfrrr79u+0y5cuX02GOP6Zlnnkn1WDcAAAAAAAAAudumTVLHjv8EPFW1R6vUTkV00fqhgQOlL74g4IFHshlekHokJCRoz549Djt+IiIidOnSJYe6tIKf5PuGYchmsykxMdHVbcOJzpw5o3379un48eM6f/68rl+/roCAABUuXFjFixdXo0aNPDbY2b17t2rWrGm/3rVrl2rUqOHGjgAAAAAAAIDcZ+NGM+CJ/vtEtoo6pA1qpjt1xvqhvn2l776TfH2zp0m4lTd+luv2d/Kkh5+fn2rVqqVatWppwIAB9vGjR4867PgJCwvTyZMnHZ7luK6coVSp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mz5dGjw47YDnjTekt9666XU7hQpJK1eau3fy5HF9k4AXyHEhT2pSe88PAAAAAAAAACD7TZsmPflk2gHPm2+aAU8K+fO7qi3AK/FGKgAAAAAAAABAtpg69fYBz1tvWQQ8AFLwiJDn3Llz7m4BAAAAAAAAAOBCkyenDHj8dEMfaLSK6rwk8/07b77ppgYBL+T249qioqJUuXJlJSUlqXbt2qpXr566d++utm3burs1AAAAAAAAAIATTJokDRniOOajRH2n/uqjueqsUK0evUrDXy/lngYBL+X2nTzjx4/XlStXFB0drU2bNumHH37QXXfdleYzP//8s+rVq6fBgwfrs88+08aNG3Xt2rVs6hgAAAAAAAAAkF5ffZUy4LEpSZP1lPporiSppnZr+E/NpWPH3NAh4L3cupPn+vXr+vzzz2Wz2WQYhvz9/bVw4UKVL18+zecSEhIUERGhHTt2aMaMGZIkm82mu+66S/Xq1VO9evVUv3591atXT0WLFs2GnwQAAAAAAAAAcKsvvpCGDr111NB/NVyD9bXj8MGDUrNm0po1UuXK2dUi4NXcGvIsXrxY0dHRstlsstlsevrpp9W4ceMMzWH8fYCjYRjav3+/Dhw4oLlz59rvly5d2h74PPLII6pSpYpTfwYAAAAAAAAAQEr/+580bFjK8Xf1mv6tz1J/6MQJqUcPaccOydfXpf0BOYFbQ545c+ZIMgOaAgUK6M1MvFEreReQzWazjxk3vbnr5MmTOnXqlBYvXqwNGzZo9erVWW8cAAAAAAAAAGDp88+l555LOf6y3tOres/6wfz5penTCXiAdHLrO3l++eUX+y6eRx55RHfccUem5rnnnnsUGBgowzAcAp7kuSUz+Fm3bp1+++03p/QOAAAAAAAAAEjp009TD3iG6TO9p1etH8ybV1q6VGrUyHXNATmM23byHDt2TFFRUZLMMObBBx/M8BzJO3g2b96spKQk7du3T2FhYfav8PBw+xrJxo8f73CcGwAAAAAAAADAOT75RBo+POX445qmz/Rv6wcDAqT588138gBIN7eFPBEREfbvfXx81KRJkyzN5+Pjo2rVqqlatWrq16+fffz48eN68803NWPGDBmGoaVLl+r69evKly9fltYDAAAAAAAAAPzj44+lESNSjj+kuZqsp6wf9PWVZs+WOnRwXXNADuW249rOnz8vydzF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Otw/evSovv76a82aNUuHDh1KMY/NZrPPAQAAAAAAAEc//2wGPNevW9f07St9+62LAp7ffpMefFBKTEz9vp+f9NNP5rt4AACAJDeHPEuXLtW+ffvsAY9hGCpRooT69eun6tWry8/PT6dOndKaNWu0fv16e0gzefJkDRgwQPfff79OnTqlkSNH6scff1RSUlKKYCdZ8njevHnVpk2b7P1BAQAAAAAAPNi6ddIDD6Qd8DzyiHmSmksCngMHpC5d0m5g+nSpXTsXLA4AgPdya8izYMECh+vu3bvr+++/V758+RzGX331VW3btk2PPvqoDhw4IEkaP368JkyYoObNm+v06dOpHsWWPFayZEl16dJF3bp1U9u2bZU3b14X/lQAAAAAAADeY+1aM+CJibGu6ddPmjHDRQFPZKTUoYN0/rx1zfjx0qOPumBxAAC8m1tDnm3bttl354SEhGjmzJmWAUzDhg21efNm3XvvvTp06JBWrlypESNG6NSpU/aj2KR/gp3atWura9eu6tq1qxo3bpxtPxNcyzAMbd++XeHh4Tp79qwkqUSJEqpTp47q16/P+5YAAAAAAMiANWukrl3TDnj69zc30fj6uqCBK1ekTp2kI0esa0aMkEaOdMHiAAB4P7eGPKdOnZJk7r4ZOHDgbXfYFClSRN99953uvfdexcTEaNGiRQ7hTrFixfSvf/1Ljz32mO666y6X95/TnDp1Sr/99pu2bt2q3377Tdu2bdPVq1ft98uVK6ejR4+6pbcbN27ok08+0X//+1/7f29uFRISouHDh+vf//63/P39s7lDAAAAAAC8y+rVZsATG2td89hj0tdfuyjgiYuTevWSwsOta/r1kz780AWLAwCQM7g15Ll8+bL9+3r16qXrmcaNG6tVq1Zat26dfReQzWZT//799fnnn6tAgQKuajdH2rhxoyZMmKCtW7fq9OnT7m4nVSdOnFD37t0VFhaWZt3Jkyf14osvatasWVq4cKFKly6dTR0CAAAAAOBdVq6UundPO+AZOFCaOtVFAU9SkjRokLmVyErbtmbC5OPjggYAAMgZ3Pq3ZEJCgv37ggULpvu5jh072r+32Wxq3bq1vvnmGwKeTPj99981f/58jw14zp49q1atWqUIePLmzasaNWqoWrVqCgwMgu8J9wAApYdJREFUdLj3xx9/qFWrVjqf1lm+AAAAAADkUitWSN26pR3wDBrkwoBHkmbOlGbPtr5fv770009SQICLGgAAIGfwmF+FyMi7VCpVqiTpn/fvDB8+3BUt5XrBwcHubkGDBg3SoUOH7NeBgYH673//q/Pnz2vXrl36888/df78eX300UcOYc+BAwc0ePBgd7QMAAAAAIDHWr7c3METF2ddM3iwiwMeyTyG7YUXUr9XsaIUGirlz+/CBgAAyBk8JuTJiFt3/TRu3NhNneQc+fPnV8uWLTVq1CjNmzdPR48e1eLFi93a08qVK7Vs2TL7tb+/v1asWKHnn39e+fLls48HBQXphRde0PLlyx3exbN48WKtW7cuW3sGAAAAAMBTLVt2+4DniSekyZOz4YQ0Hx/po4+k8eMdx4sVM5OoEiVc3AAAADmDW9/J4yx33HGHu1vwWl27dlX79u1VtWpV+dzyv+COHDnipq5Mr7/+usP1yy+/rObNm1vWt2jRQi+99JLeeecd+9iYMWO0ceNGl/UIAAAAAIA3CA2VevaU4uOta558Uvrqq2x+Bc7IkWag8/jjUp48ZqOVK2djAwAAeDev3Mlzq4wc9QZHlSpVUvXq1VMEPO62c+dO/fbbb/broKAgjRo16rbPjR49WkFBQfbrTZs2ac+ePS7pEQAAAAAAb7Bkye0DnqefdkPAk6x/f2npUunHH6WGDd3QAAAA3stjPtlftGiR1q1bpwsXLri7FXiAhQsXOlw//PDDyp+Os3jz58+vhx56yGFswYIFzmwNAID/Z+/O42yq/ziOv++M2czYx77TIkoo/WTfowiJoqJQSf1CSSp7qSwtKuqnlBSJyq4sWRIiWUPKvpuxm8XMmDm/P05zzR1z79yZuevM6/l4nId7zvmc7/lMv/xi3vP9fgEAAPzGwoXSAw84Dnj69pU+/thLAU+q1q2le+7xYgMAAPgnnwh5DMPQhx9+qJYtW6pEiRIqW7as2rZtq5dfflkzZ87Un3/+qeTkZG+3CQ9avHixzXnr1q2dfrZVq1Y254sWLXJJTwAAAAAA+JMFC6TOnaWkJPs1zzwjTZrk5YAHAABkm0/syWOxWGQYhvX85MmTOnXqlJYtW2a9FhQUpGrVqqlmzZoKCgryRpvwEMMwtGPHDptr9evXd/r5Bg0a2Jxv375dhmGwrB8AAAAAIM+YN0/q2tVxwPPss9KHH0pu++uyYbhxcAAAIPlAyJM23En/Tfi09xITE7Vjxw7t3LnTWpt6/5FHHlGdOnVUu3Zt1a5dW0WKFPFA53CXw4cPKy4uznoeHh6uChUqOP18xYoVlT9/fusYsbGxOnr0aJbGAAAAAADAX82dawY8V6/ar3nuOemDD9yYwVy5InXsKD35pDmdCAAAuIVXQ55z585p27Zt2rp1q/XYu3evrqb7U0hG4U/qNcMwNGvWLM2aNct6v3z58jahT+3atVW2bFn3f0Fwib1799qcly9fPstjlC9f3macvXv3EvIAAAAAAHK9H36QHnrIccDz/PPS+++7MeBJTpa6d5eWLpWWLTM3/Hn6aTe9DACAvM2rIU/hwoXVtGlTNW3a1HotISFBO3futIY+27Zt044dO2xmdqRKG/6knfVz5MgRHT16VPPnz7dei4yMtAl9unbt6p4vCjkWFRVlc16uXLksj1G2bFmbkCf9mNkVFRWl6OjoLD2zb98+l7wbAAAAAABHvvtOevhhM2Oxp39/6b333LxEW79+5nSi1PO+faXTp6Vhw1i+DQAAF/P6cm3phYSE6M4779Sdd95pvWYYhvbu3WsT/GzdulVnz561edbRcm/R0dFavny5li9fLkmEPD4sJibG5jw8PDzLY6R/Jv2Y2TV58mSNGjXKJWMBAAAAAOAqc+ZI3bo5DngGDpTeecfNOcuIEdKUKRlfP33aXCMuMNCNDQAAkLf4XMiTEYvFomrVqqlatWrq1q2b9fqxY8dsQp+tW7fq8OHD1z2bVtql3uCb0gcyoaGhWR4jLCzM4ZgAAAAAAOQWs2ebq6M5CnheeEGaMMHNAc9HH0mvv27//vffS6+9JpUp48YmAADIW/wi5LGnXLlyKleunNq3b2+9duHCheuCn7/++kvJjv6kA59y5coVm/Pg4OAsjxESEmJzHh8fn6OeAAAAAADwRbNmSY8+6jjgGTRIGjfOzQHP7NnmZj/2FCwo/fQTAQ8AAC7m1yFPRgoXLqxmzZqpWbNm1mvp9/nZunWrFztEZtLP3ElMTMzyGAkJCQ7HzK5+/fqpS5cuWXpm37596tixo0veDwAAAABAqm++MQOelBT7NYMHS2+/7eaAZ8UKs5E0y+bbCAmR5s+XatVyYxMAAORNuS7kyUhG+/zAd0VERNicp5/Z44z0M3fSj5ldJUqUUIkSJVwyFgAAAAAA2TVzpvTYY44Dnpdflt56y80Bzx9/SJ06SUlJGd8PCDCbbdrUjU0AAJB3BXi7ASC99IFMbGxslsdI/4yrQh4AAAAAALzt668zD3heecUDAc8//0ht20qO9sH9+GPpgQfc2AQAAHkbIQ98TvqZMseOHcvyGMePH3c4JgAAAAAA/uirr6QePRwHPK++Ko0Z4+aA5+RJqXVrKTrafs3o0dJTT7mxCQAAQMgDn3PzzTfbnB89ejTLY6R/plq1ajnqCQAAAAAAb/vyS6lnT/tb30jS0KHSG2+4OeC5cEFq00Y6dMh+zbPPms0AAAC3IuSBz6lYsaLCwsKs57GxsTp8+LDTzx8+fFhxcXHW8/DwcJUvX96lPQIAAAAA4EnTpklPPOE44Bk+3Jw849aA58oVqUMHaccO+zVdukgTJ7q5EQAAIBHywAdZLBbVrFnT5tr69eudfn7dunU25zVr1pSFP1gCAAAAAPzU559LvXo5DnhGjJBGjXJzrpKcLHXvLv3yi/2aFi3MNeUCA93YCAAASEXIA5/Url07m/Ply5c7/Wz62vbt27ukJwAAAAAAPG3qVKlPH8cBz8iR5uFWhiE984w0d679mjp1zPshIW5uBgAApCLkgU+6//77bc7nzJmjmJiYTJ+7fPmy5syZY3OtQ4cOLu0NAAAAAABP+PTTzAOe0aPNWTxuN3y42ZA9N9wg/fijVKCAB5oBAACpCHngk2rWrKm6detaz2NiYjRu3LhMnxs3bpxiY2Ot5/Xq1VP16tXd0iMAAAAAAO4yZYr01FOOa15/XRo2zAPNfPih9MYb9u+XKiUtXSqVKOGBZgAAQFqEPPAIi8Vic6xevTrTZ0aPHm1z/vbbb+sXB+v+rlmzRmPHjrW59oajP4QCAAAAAOCD/vc/6emnHdeMGSMNHeqBZr79Vurf3/79ggWln36SqlTxQDMAACC9fN5uAN63bt06xcfHX3d9+/btNudXrlzRihUrMhyjTJkyLp8x06ZNG7Vu3VrLli2TJCUlJemee+7R22+/rSeffFL58+eXJMXGxurTTz/VK6+8oqSkJOvz9957r1q0aOHSngAAAAAAcKePP5b69XNc89Zb0pAhnulHly5JFkvGa8aFhEgLFki33+6hZgAAQHoWw3C0sivygkqVKunw4cM5GqNnz56aNm2a3fsWi8XmfNWqVWratGmm454+fVp33323Dh48aHM9LCxMVapUkWEYOnDggK5cuWJzv2rVqtqwYYOKFy/u9NfgLrt27dKtt95qPf/zzz9Vo0YNL3YEAAAAAPBFkyZJzz3nuObtt6WXX/ZMP1Y//CB16yYlJl67FhAgffed1KmTh5sBAMB9/PF7uV6ZyZN2Ga4ePXqoUqVK3mgDfqBkyZJatWqVOnToYDOzKD4+Xrt27crwmVq1amnBggU+EfAAAAAAAOCMjz6S/vtfxzXjxkkvveSZfmw88IC5506HDubMHsmcckTAAwCA13kl5Bk5cqR1ZkfDhg3thjyEQZCkihUratOmTXr//fc1ceJEnThxIsO6MmXKaMCAAerfv7+Cg4M93CUAAAAAANnzwQeOt72RpAkTpBdf9Ew/GWraVFqzRmrTRnr2Wempp7zYDAAASOW1PXkMw7huCa/0nA2DkDOHDh1y+ztyuipgcHCwBg8erEGDBumPP/7Q9u3bFRUVJUkqUaKEatWqpTp16iggIMAV7QIAAAAA4BETJ0oDBjiueecd6YUXPNKOY7VqSTt3SpGR3u4EAAD8y2shT2YBTypnwiDkHQEBAapbt67q1q3r7VYAAAAAAMiR997LPLx5773MQyCPYml0AAB8ilemPYSGhlpndiQkJDisJeABAAAAAAC5zbvvZh7wvP++jwU8AADA53gl5ClWrJj18549e7zRAgAAAAAAgFc4s7+OM/v0uERysvTdd1IOl1kHAADe4ZWQ5/bbb5dkLsU2efJknT9/3httAAAAAAAAeNT48dJLLzmu+egj6b//9UAzhiH17St16WKmTikpHngpAABwJa/syXPfffdpyZIlslgsOnjwoG6++WY98MADqlGjhgoWLJjhEm3Lli3TsWPHXNZDjx49XDYWAAAAAABAZsaOlYYMcVwzaZLUr59n+tGrr0qffWZ+fu896cwZaepUKSjIQw0AAICcshiG5+fjJiQk6Oabb9bRo0clmTN6Mgp20rbm6r15kpOTXToeYM+uXbt06623Ws///PNP1ahRw4sdAQAAAAA87a23zEzFkcmTpWee8Uw/mjAh4ylF7dpJs2dLYWEeagQAAN/hj9/L9cpybSEhIVq4cKFKlix5XcBjGIb1SCvt9eweqeMAAAAAAAB4yptvZh7wfPKJBwOeL76wv2bcokVS164eagQAAOSUV0IeSbrtttv0559/atCgQdawx90BDAEPAAAAAADwpDfekF57zXHN//4nPf20Z/rRvHlSnz7274eGZr5pEAAA8Ble2ZMnVdGiRTVu3DiNGzdOhw4d0t9//60LFy7oypUrSklJUa9evayzfAYNGqTq1at7s10AAAAAAACnjR4tjRjhuObTTx1nLi61erX08MNSSkrG9wMDpW+/lRo39lBDAAAgp7wa8qRVqVIlVapUyeZar169rJ/vueceNW/e3MNdAQAAAAAAZN2oUdLIkfbvWyzSZ59Jab714V5bt0r33y8lJNiv+fxzswYAAPgNnwl5AAAAAAAA/J1hmOHO6NH2aywWaepU6YknPNTU339L99wjXb5sv+add6QePTzUEAAAcBWfD3nYRwcAAAAAAPgDwzCXZ3v9dfs1Fos5Yebxxz3U1PHjUuvWUnS0/ZpXXpFeeMFDDQEAAFfy6ZAnxd4asQAAAAAAAD7EMKThw6U33rBfY7FI06Z5cMLMuXNmwHP4sP2aJ5+UxozxUEMAAMDVfDrkAQAAAAAA8HWGIQ0dKr35pv0ai0X68kvpscc81FRMjHTvvdLu3fZrOneWPv7YbA4AAPglQh4AAAAAAIBsMgzptdekt96yXxMQYAY8jz7qoaYSE80AZ+NG+zUtWkgzZkiBgR5qCgAAuEOuCHliYmJ0+fJlFShQQBEREd5uBwAAAAAA5AGGYW5nM3as/ZqAAOmrr6Tu3T3UVHKyuR7csmX2a+rWlebOlUJCPNQUAABwF78LeS5fvqyZM2fql19+0W+//aajR48qOTnZej8wMFAVKlRQvXr11KRJE3Xr1o3gBwAAAAAAuJRhSC+/LI0fb78mIED6+mupWzcPNvXcc9K339qvqVZNWrJEKlDAQ00BAAB38puQJy4uTkOHDtVnn32m2NhYSZJhGNfVXb16VQcOHNDBgwf1zTffaNCgQXryySf1+uuvKywszNNtAwAAAACAXMYwpMGDpQkT7NcEBpqroT30kOf60iuvSJ98Yv9++fLmDJ/ISM/1BAAA3CrA2w04Y/v27apVq5YmTpyomJgYa7hjsVjsHpIZAl2+fFnvvfeeatWqpe3bt3vzywAAAAAAAH7OMKRBgzIPeGbO9HDA8/bbjteNi4w0A57y5T3XEwAAcDufn8mzd+9etWzZUmfPnpVkBjuGYViDngIFCqhYsWIKDw9XbGyszp49q8uXL1ufT63/559/1KpVK61bt0433nijV74WAAAAAADgvwxDeuEF6f337dcEBkrffCN16eKxtqSoKDPksSciQvrxR3OpNgAAkKv49EyepKQk3X///Tp79qx1ho5hGKpXr56mTJmi/fv36+LFizpw4IB27typAwcO6OLFi9q/f78+/fRT3X333TIMw/rsmTNndP/99+vq1ave/tIAAAAAAIAfMQxp4EDHAU++fOZ2OB4NeCSpRAlp9WqpePHr7wUHS/PnS3fe6eGmAACAJ/h0yDNp0iT9888/1nCnQIECmjVrltavX68+ffqocuXKGT5XuXJl9e7dW+vWrdPs2bNVsGBB672///5bkyZN8tSXAAAAAAAA/JxhSP37SxMn2q9JDXg6d/ZcXzZq1ZLWrrVdji0wUJo9W2re3EtNAQAAd/PpkGfy5MnWgCd//vxauXKlunbtmqUxHnzwQa1atUphYWHWsQh5AAAAAACAMwxDev556cMP7dfky2dmKQ884Lm+MnTzzdKvv0o33ihZLNKXX0odOni5KQAA4E4+G/L8888/2rdvnyRzX51Ro0apTp062RqrVq1aGjlypHUfn/379+uff/5xWa8AAAAAACD3MQzpueekjz6yXxMUJH33ndSpk+f6cqhCBXNGz8yZ0iOPeLsbAADgZj4b8mzdulWSZBiGgoKC1Lt37xyN16dPHwUFBVnPt23blqPxAAAAAABA7pWSIj37rDR5sv2a1IDH5ybLlCwpPfywt7sAAAAe4LMhT1RUlCRzFk/lypVVuHDhHI1XuHBhValSxXp++vTpHI0HAAAAAAByp5QUqV8/6eOP7dcEBUnffy/df7/n+gIAAEjPZ0OemJgY6+eCBQu6ZMwCBQpYP8fGxrpkTAAAAAAAkHukpEjPPCP973/2a4KDpR9+kNq391xfioqSEhM9+EIAAOAPfDbkiYyMlGQu13b8+HGXjHnixAnr52LFirlkTAAAAAAAkDukpEhPPy1NmWK/JjhYmjtXatfOc30pOlpq2tRcFy4uzoMvBgAAvs5nQ54yZcpYP588eVJ//vlnjsbbtWuXTciTdnwAAAAAAJC3paRITz0lffaZ/ZqQEGnePOneez3WlnTxotSmjbRnj/TTT+bnixc92AAAAPBlPhvyNGjQQPny5ZPFYpEkjRw5MkfjpX0+X758atiwYY7GAwAAAAAAuUNKitSnjzR1qv2a1ICnbVuPtWXO2mnfXtqy5dq1tWul5s3N2T0AACDP89mQp1ChQmrUqJEMw5BhGJo7d65Gjx6drbHGjBmj77//XhaLRRaLRY0bN3bZPj8AAAAAAMB/JSdLvXtLX3xhvyY0VFqwwJxE4zGJidKDD5qhTnpbtkiNG0suWt4eAAD4L58NeSRpxIgRkiSLxSLDMDRq1Ch17NhR+/fvd+r5AwcO6IEHHtDw4cOtY0jS8OHD3dYzAAAAAADwD8nJUq9e0rRp9mtSA57WrT3WltnYY49JP/5ovyYgwGwOAADkafm83YAjjRs31qOPPqqvv/7aGtIsXLhQixYtUsOGDdW8eXPVrFlTkZGRCg8PV2xsrM6ePavt27dr5cqV+vXXX60zgVJn8Tz66KNq1KiRt780AAAAAADgRcnJ0hNPSF99Zb8mNFRauFBq2dJzfckwpL59pdmz7ddUriwtXy4VK+a5vgAAgE/y6ZBHkqZOnaqTJ0/q559/tu7Pk5KSorVr12ptRlOW00gb7hiGoVatWmmqowV2AQAAAABArpecLPXsKc2YYb8mLMwMeFq08FxfMgxp0CDps8/s15QuLa1YIZUp47m+AACAz/Lp5dokKSgoSIsXL9bAgQMlXQtuUj/bO6Rry7xZLBa9+OKLWrhwofLl8/lcCwAAAAAAuMnVq1KPHpkHPIsWeTjgkaQxY6R337V/v1gxcwZPlSqe6wkAAPg0nw95JCk4OFjvvPOONm7cqIcfflhBQUHWIMcewzAUFBSk7t27a+PGjRo/fryCg4M91DEAAAAAAPA1qQHPzJn2a/Lnl5YskZo391xfkqQPPpCGDbN/v0AB6aefpBo1PNcTAADweX41reXOO+/UzJkzdfHiRW3YsEEbN27U4cOHdf78ecXExCgiIkJFihRRxYoVVa9ePdWrV0+FChXydtsAAAAAAMDLrl6VHn1U+vZb+zWpAU+TJp7rS5L0+edS//7276duDnTnnZ7rCQAA+AW/CnlSFSpUSG3atFGbNm283QoAAAAAAPBxV69KjzwizZ5tvyY83Ax4Gjf2XF+SpG++kfr0sX8/Xz7pu++8kDwBAAB/4JchDwAAAAAAgDOSksyAZ84c+zXh4dKPP0qNGnmuL0nS3LnSY49J9pakt1ik6dOl++7zbF8AAMBvEPIAAAAAAIBcKSlJ6tZN+v57+zUREWbA07Ch5/qSZO6v89BDUnKy/ZpPPjG/AAAAADsIeQAAAAAAQK6TlCQ9/LD0ww/2ayIizKylQQPP9SVJWr1a6tTJbNKe8eOlp57yWEsAAMA/BXi7AQAAAAAAAFdKTDQnyTgKeAoUkJYu9ULAs2GD1K6ddOWK/ZpRo6RBgzzXEwAA8FvM5AEAAAAAALlGYqLUtas0f779moIFzYCnXj3P9SVJ+uMPqU0bKTbWfs3gwdKwYZ7rCQAA+DVCHgAAAAAAkCskJkpdukgLFtivKVhQWrZM+s9/PNeXJMkwpAEDpEuX7Nc895z09tuSxeKxtgAAgH9juTYAAAAAAOD3EhKkBx90HPAUKiQtX+6FgEcyg5vvv5dq1sz4fu/e0sSJBDwAACBLCHkAAAAAAIBfS0iQOneWFi60X5Ma8Nx1l+f6uk6JEtKqVdKdd9pe795d+t//pAC+TQMAALKGPz0AAAAAAAC/deWK9MAD0uLF9msKF5ZWrJDq1vVYW/YVLWo206CBef7AA9KXX0qBgd7tCwAA+CVCHgAAAAAA4JdSA54lS+zXFCliZirpJ894VaFC0tKl0vDh0jffSPnYMhkAAGQPf4oAAAAAAAB+58oVqWNHMyuxJzXgqVPHY205LzxcGjXK210AAAA/x0weAAAAAADgV+LjpQ4dHAc8RYtKP//sowEPAACAixDyAAAAAAAAv5Ea8CxbZr8mNeCpXdtzfUmSYmKkqCgPvxQAAORlhDwAAAAAAMAvxMVJ998vLV9uv6ZYMWnlSqlWLY+1ZYqPN5tr3Fg6dszDLwcAAHkVIQ8AAAAAAPB5cXFS+/bmHjv2REaaAc/tt3uuL0lSQoL0wAPSqlXS3r1m0HPwoIebAAAAeREhDwAAAAAA8GmxsVK7dmaAY09qwFOzpuf6kiRdvSp16yb99NO1awcPmkHP3397uBkAAJDX5PN2A64WFxenr776Sr/++qvOnDmjIkWK6I477lD37t1VunRpb7cHAAAAAACyIDXgWb3afk3x4mbAc+utHmvLlJws9ewpzZ17/b1jx8ygZ8UKLzQGAADyCp8Oefbs2aNvvvnGet6rVy9VqlTJbv26dev04IMPKirdJofffvutRo4cqXfffVdPPvmku9oFAAAAAAAuFBsr3XeftGaN/ZoSJcyAp0YNz/UlSUpJkZ56Spo503FdcLBn+gEAAHmST4c8H3/8sSZNmiRJKlmypIYPH263dv/+/br33nt1+fJlSZLFYrHeMwxDsbGx6tu3rywWi/r06ePexgEAAAAAQI7ExJgBzy+/2K8pWdIMeKpX91xfksyAp29f6fPP7dcUK2bO4rnpJs/1BQAA8hyf3pNn8eLFMgxDkvToo48qXz77mdSAAQN0+fJlWSwWWSwWGYZhPSRZrw0YMEBHjx71SP8AAAAAACDrLl+W2rbNPOBZtcoLAY9hSM8+K336qf2aQoWkZctYpg0AALidz4Y8UVFROnjwoHVGzr333mu3dvfu3Vq8eLE1yClWrJg+++wz7dmzR2vXrlWHDh1kGIYsFovi4+M1duxYT30ZAAAAAAAgC1IDnl9/tV9TqpS5R88tt3isLZNhSM89J33yif2a8HDpxx+lOnU81xcAAMizfDbk2b17tyRZw5m6devarZ0xY4ZN7dy5c9WrVy/dfPPNatCggebOnasWLVpYZ/Z8++23SklJ8cjXAQAAAAAAnHPpktSmjbRunf2a0qXNgKdaNY+1ZTIMqX9/afJk+zWhodKiRdLdd3uuLwAAkKf5bMhz6NAh6+dy5copPDzcbu2PP/4oyVySrWHDhmrQoMF1NSNGjLB+PnfunDVEAgAAAAAA3pca8Kxfb7+mTBkz4Ln5Zo+1ZTIM6YUXpA8/tF8TGiotXCg1beqxtgAAAHw25Dl//rwkM7gpWrSow7rt27dbl3V78MEHM6xr0KCBIiIirOc7d+50YbcAAAAAACC7Ll6U7rlH2rDBfk1qwHPTTR5ry2QY0uDB0vvv268JCZHmzZNatvRUVwAAAJJ8OOSJi4uzfg4LC7Nb99tvv1mXYZOk1q1bZ1hnsVhUuXJl63l0dLSLOgUAAAAAANmVGvD89pv9mrJlzYDnxhs91pbJMKRXXpEmTLBfExwszZ1rfhEAAAAe5rMhT0hIiPVzbGys3bpffvnF+jkyMlI3O5iznXbJt5iYmBx2CAAAAAAAcuLCBal1a2njRvs15cp5MeAZOlQaO9Z+TVCQ9P33Utu2nusLAAAgjXzebsCewoULS5IMw7DZnye9FStWSLq2H48jacOi4ODgHPcIAAAAAACyJzXg+f13+zXly0urVklVq3qsrWtGjpTefNP+/aAg6bvvpHbtPNYSAABAej47kyftjJzLly9r69at19UcPHhQf/zxh3U/nqaZbG545swZ6+dChQq5plEAAAAAAJAl589LrVo5DngqVDBn8Hgl4Bk92jzsyZdP+vZb6f77PdcTAABABnw25Kldu7aCg4OtAc7bb799Xc2Ef9fETd2Pp1WrVnbHO3funE6ePGkdr2LFiq5uGQAAAAAAZOLcOallS2nzZvs1FSuaAU+VKh5r65oxY6QRI+zfDwyUZs2SOnXyXE8AAAB2+GzIExERoXvvvVeGYcgwDH333Xfq1auXfv/9d23btk2DBg3Sxx9/LIvFIovFolq1aqlatWp2x/v93x8PSg2EHO3dAwAAAAAAXC814NmyxX5NasBTubLH2romOVn67Tf79wMDpZkzpc6dPdcTAACAAz4b8kjS0KFDFRAQIIvFIsMw9OWXX6pevXq644479N5770m6FtoMHjzY4Vjz58+3fi5ZsiQzeQAAAAAA8KCzZ6UWLaQMVmO3qlTJDHgqVfJQU+kFBpr77HTocP29gADp66+lrl093xcAAIAdPh3y1KlTR2+88YYMw7Aus5Y6s0eS9Vr79u310EMP2R0nOTlZP/zwg3XWT8OGDd3fPAAAAAAAkCSdOWMGPNu22a+pXNnLAU+qkBBp9mzb5dgsFmn6dOnhh73XFwAAQAZ8OuSRpCFDhujTTz9VkSJFrOGOZIY9AQEBevLJJ/Xtt986HGPWrFmKioqyPn/fffe5tWcAAAAAAGBKDXi2b7dfU6WKGfD4zKIbwcHSt99KDz5oBjzTpkmPPOLtrgAAAK6Tz9sNOKN379567LHH9PPPP+vvv/9WfHy8ypQpo+bNm6tcuXKZPr937151SDPVul27du5sFwAAAAAASIqONgOenTvt16QGPOXLe6wt5wQFSd98I/3yi9S8ube7AQAAyJBfhDySFBwcrLZt26pt27ZZfnb06NFu6AgAAAAAANgTFWUGPH/+ab+malUz4HHi5ze9I18+Ah4AAODT/CbkAQAAAAAA/iEqysxGdu2yX3PDDWbAU7asx9oCAADIdXx+Tx4AAAAAAOA/Tp+WmjVzHPDceKMXA57PP5fWrvXCiwEAAFzPb2fynDt3Tnv27NG5c+d08eJFpaSk6J577lHJkiW93RoAAAAAAHnSqVPmDJ49e+zX3HSTtGqVVKaM5/qy+uQT6ZlnpIgIaelSqX59LzQBAADgOn4V8kRFRemjjz7S999/r7/++uu6+8uXL88w5Pniiy909OhRSVKZMmXUp08ft/cKAAAAAEBecuqUOYMng7+uW918sxnwlC7tub6sJk2SnnvO/BwTI7VpIy1bJtWr54VmAAAAXMNvQp7x48dr+PDhSkxMlGEY1923WCx2n42JidHIkSNlsVgUGBio9u3bM+MHAAAAAAAXOXnSnMHjKOCpVk1audJLAc+HH0rPP2977fJl6Z57pOXLpbvu8kJTAAAAOefze/IkJyfrgQce0JAhQ5SQkHDdfUfhTqrevXurYMGCMgxDycnJmjlzpjtaBQAAAAAgzzlxQmra1HHAc8stXpzB8/771wc8qS5dklq3NjcSAgAA8EM+H/I8++yzmjdvngzDkMVikWEYql27tl5++WVNmjQpw1k96eXPn1/t27e3ni9ZssSdLQMAAAAAkCecOGEu0fb33/Zrqlc3A55SpTzXl9U770gDBzquGTZMYrUPAADgp3w65Pn11181ZcoUWSwWWSwWRUZGavHixfrjjz/01ltv6ZlnnpHk3Gyejh07SpIMw9C6deuUmJjoztYBAAAAAMjVjh83Z/A4Cnhq1DCXaPNKhjJunDRokOOad9+VXnzRM/0AAAC4gU+HPMOHD5dkBjMFChTQmjVr1LZt22yN9Z///Mf6OSEhQXv37nVJjwAAAAAA5DXHjpkBzz//2K+59VYvBjxvvSW9/LLjmokTM5/lAwAA4OPyebsBe86fP6+1a9daZ+kMHTpU1apVy/Z45cqVU5EiRXT+/HlJ0l9//aXbbrvNJb3mRvv379emTZt07NgxJSYmqkiRIqpWrZrq16+v0NBQb7cHAAAAAPCSo0fNJdr277dfc9tt0s8/S8WLe64vqzfeMJdgc+Sjj6Rnn/VMPwAAAG7ksyHPr7/+quTkZElSYGCg+vTpk+MxS5QoYQ15oqKicjxebjRv3jy9/vrr2rJlS4b3IyIi9Pjjj2vEiBGKjIx0ay9NmzbVmjVrsv38F198occff9x1DQEAAABAHnfkiBnwHDhgv6ZmTWnFCi8EPIYhjRplHo58/LHUt69negIAAHAzn12u7cSJE5LM/XaqVKmiwoUL53jMQoUKWT9fvnw5x+PlJgkJCXr00UfVqVMnuwGPJMXExOijjz5S9erV9csvv3iwQwAAAACANx0+bC7R5ijguf12L83gMQzp1VczD3imTCHgAQAAuYrPhjznzp2zfi5atKhLxkxISLB+DgoKcsmYuUFKSooeeughzZgxw+Z6YGCgKleurFq1atkEZJIUHR2ttm3basOGDZ5sFQAAAADgBakBz8GD9mtq1TIDHjcv+nA9w5BeeEF6+237NRaLNHWq9OSTnusLAADAA3x2uTZ3zLpJu0Sbu5ca8yfjx4/X/Pnzba717dtXw4YNU5kyZSSZQdD8+fM1YMAAHTlyRJIUFxenrl276s8//7wuBHKH5cuXZ6m+Ro0abuoEAAAAAPKOQ4fMJdoOHbJfU7u2tHy5VKyYp7r6V0qK9Nxz5hJs9lgs0hdfSD17eq4vAAAAD/HZkKf4v3O7DcPQ4cOHlZKSooCA7E88Onr0qE6ePGk9Tw0v8rqzZ89qzJgxNtfeeustDRkyxOZaQECAOnXqpLvuuksNGzbUoX//dH/s2DG9++67GpXZlHgXaNmypdvfAQAAAAC45tAhcwbP4cP2a+rUMQMeFy3C4bzkZOmpp6TPP7dfExAgTZsmPfaYx9oCAADwJJ9dru3222+3fo6Li9O6detyNN6cOXOsnwMDA1WvXr0cjZdbjBs3zmamVOPGjfXyyy/brS9btqw+++wzm2vvvfeezp4967YeAQAAAACed/Cg1KSJ44Dnjju8FPBcvWrOzHEU8AQGSjNmEPAAAIBczWdDnptuukmVK1eWxWKRJL377rvZHuvSpUt67733ZLFYZLFYVLduXRUoUMBVrfqtlJQUffHFFzbXRo4caf1nbk+LFi3UqFEj6/nly5c1e/Zst/QIAAAAAPC8AwfMgOff1bozdOedXgp4kpKk7t3NAMeeoCBpzhzp4Yc91xcAAIAX+GzII0k9evSQYRgyDEMLFizQl19+meUxkpOT1aNHDx0/flyGYUiS+vXr5+pW/dL69esVHR1tPa9SpYqaNm3q1LO9e/e2OZ83b54LOwMAAAAAeMv+/WbAc/So/Zq6dc2Ap0gRz/VlNW+eGeDYExws/fCD1KmTx1oCAADwFp8OeQYNGqQSJUrIYrHIMAz16dNH48ePV3JyslPP//XXX2revLkWLlxoncVz0003qXv37m7u3D8sXrzY5rxVq1aZzuJJW5vW6tWrFRsb67LeAAAAAACet2+fuQfPsWP2a+66S1q2TCpc2FNdpdOlizRsWMb3QkOlhQuldu082xMAAICX5PN2A46Eh4frs88+U6dOnZSSkqLk5GQNGTJEkydPVrdu3XTHHXdIkgzDkMVi0R9//KFz585p3759WrlypVauXGmdCSRJYWFhmjlzptNBRm63bds2m/P69es7/WyZMmVUqVIlHTp0SJKUmJio3bt3q27dui7sEAAAAADgKf/8IzVrJh0/br/mP/+Rli6VChXyXF8ZGjVKunJFGj/+2rXwcGnRIjOlAgAAyCN8OuSRpHbt2mnSpEnWJdYMw9Dhw4c1duxYmzrDMDRkyJDrrqUGOkFBQfriiy9Uu3ZtzzTuB/bs2WNzXr169Sw9X716dWvIkzqeu0Oeixcv6vDhw7pw4YIiIiJUrFgxlStXToGBgW59LwAAAADkZn//bQY8J07Yr6lXzwx4Chb0XF92WSzS2LFm0PPhh1KBAtKPP0oNGni7MwAAAI/y+ZBHkp566ilVrVpVjz32mE6dOmUNbtKGOKnnqVKXZzMMQyVLltScOXPUsGFDj/fuq+Lj43Uk3Q6a5cuXz9IY6ev37t2b474cqV27tnbs2KGUlBSb6xEREWrQoIE6d+6sHj16KCQkxK19AAAAAEBusnevGfCcPGm/5u67pZ9+8pGAJ5XFIk2caO7B07WruY4cAABAHuMXIY8ktWjRQnv27NHHH3+sjz76SCf+/fGitMFOWoZhqEiRIhowYID69++vgj71J1HvO3PmjM0/u6CgIJUoUSJLY5QtW9bmPCoqyiW92ZN+eblUMTExWrp0qZYuXarhw4frgw8+UJcuXdzSQ1RUlKKjo7P0zL59+9zSCwAAAADk1F9/Sc2bOw54GjQwJ8kUKOC5vpxmsUgTJni7CwAAAK/xm5BHkgoVKqQhQ4Zo8ODB2r59u9auXas9e/bo7NmzunDhgvLnz6/IyEhVrlxZzZo101133aV8+fzqS/SYmJgYm/P8+fNnea+i8PBwh2N6w6lTp9S1a1cNGjRI49OuzewikydP1qhRo1w+LgAAAAB42l9/mTN4Tp2yX9OwobRkiY8GPAAAAPCvkCdVQECAateuzf46OZA+kAkNDc3yGGFhYQ7HdIXQ0FC1atVKbdu2Va1atXTDDTeocOHCSkhIUFRUlDZs2KBvvvlGS5YssZmZNGHCBBUrVuy6fZoAAAAAANKePWbAc/q0/ZpGjaTFi70Q8Pz9t/Trr1KvXh5+MQAAgP/xy5AHOXflyhWb8+Dg4CyPkX7vm/j4+Bz1lN4LL7ygBg0aqFixYtfdCwoKUkREhKpUqaJHHnlEv/76qx5++GEdP37cWvPqq6+qbdu2uv32213aFwAAAAD4s927zYDH0YrbjRubAU9EhOf6kiTt2CG1amU2Z7FITzzh4QYAAAD8CyFPHpV+5k5iYmKWx0hISHA4Zk7df//9Ttc2bNhQq1ev1t13360zZ85IMvdlGjp0qBYuXOiynvr165fl/X727dunjh07uqwHAAAAAMiuXbvMgMfRVqNNmpgBT7oVut1v0yapTRvp/HnzvE8fs4muXT3cCAAAgP8g5MmjItL9OFb6mT3OSD9zJ/2YnnbDDTdo/PjxeiLNT3otWbJE586dU9GiRV3yjhIlSqhEiRIuGQsAAAAAPOnPP6XmzR0HPE2bSosWeSHgWbNGatdOSrsMeEqK9MgjUv785j0AAABcJ8DbDcA70gcycXFxNnvaOCM2NtbhmN7Qo0cPFS9e3HqekpKiFStWeLEjAAAAAPC+nTszn8HTvLmXZvAsXmzO4Mlon9erV6UHH5Q2bPBwUwAAAP6BkCePioyMlMVisZ4nJSUpytGCzBlIu/+NJJ+Y4RIQEKCmTZvaXNu7d693mgEAAAAAH7Bjhxnw/LuydYZatJAWLjQnzXjUN99IHTtKjlaXaNhQqlnTYy0BAAD4E59erq1Xr15uGddisWjq1KluGdtfhIWFqUKFCjp8+LD12pEjR1SyZEmnxzhy5IjNebVq1VzWX06UL1/e5jza0Y+qAQAAAEAutn27GeCcPWu/pmVLaf58LwQ8H38sPfus5GhVifbtpdmzJRfvAQsAAJBb+HTIM23aNJvZJq5gGAYhz7+qVatmE/Ls3r1bdevWdfr5PXv2XDeeLwgKCrI5T0pK8lInAAAAAOA927aZAc+5c/ZrWrUyA56wMI+1ZYY6b74pDR3quO7hh6Xp06V0f8cDAADANbl6uTbDMGwO2KpVq5bN+fr1651+9uTJkzp06JD1PCgoSNWrV3dRZzlz6tQpm/O0e/QAAAAAQF6wdau5x46jgOeee7wU8AwalHnA07u39PXXBDwAAACZ8PmQJ31Qk5VDMpdmS50NRNBjq127djbnK1ascPqf0bJly2zOmzVrpoiICJf1lhO//vqrzXn65dsAAAAAIDfbssWcwXP+vP2aNm2kefM8HPBcvWqGN+++67juxRelTz+VAgM90xcAAIAf8+nl2g4ePJjlZ+Li4hQdHa3ff/9d3377rTZv3iyLxaIbbrhBU6dOVYUKFdzQqX+qX7++IiMjdebf3TcPHDig1atXq1mzZpk+m365uw4dOrilx6xas2aN9u/fb3OtRYsWXuoGAAAAADzrjz/MPXYuXLBf07at9MMPHt7mJiFB6t7dfLEjY8ZIr7wiuXjpdgAAgNzKYuTy6S0//PCDnnzySV24cEGlS5fWihUrfGbvGF/w0ksvacKECdbzJk2aaNWqVQ73Qvr555/VsmVL63mBAgV04MABRUZGurXXzMTGxqp+/frasWOH9dptt91mc+4Nu3bt0q233mo9//PPP1WjRg0vdgQAAAAgN9q82dxjx1HAc++9Zs4SEuKxtqSYGKljR+nnn+3XWCzSpEnSM894rC0AAID0/PF7uT6/XFtOPfDAA/rpp58UGhqqEydO6N5779WlS5e83ZbPePnll22WWVuzZo3Gjh1rt/748ePq06ePzbX+/ftnGvCkLpuXeqxevdphff/+/XXixInMv4B/nTlzRvfff/91gc6oUaOcHgMAAAAA/NXvv2c+g+e++7wQ8Jw9azbmKODJl0+aMYOABwAAIBtyfcgjSXXr1tWgQYMkSYcPH9aIESO83JHviIyM1Kuvvmpz7ZVXXlG/fv1sQpaUlBTNmzdP9evX16FDh6zXy5QpoxdffNHlfX3wwQeqUqWKOnXqpBkzZti8M62jR49q/Pjxuu2227Ry5Uqbex07dlSnTp1c3hsAAAAA+JKNG80c5eJF+zXt20vff+/hgOfoUalRI7NBe0JDpfnzpW7dPNcXAABALpLrl2tLdfLkSZUtW1aSlD9/fkVHRyvMoztM+q6UlBR16NBBixYtsrkeGBioihUrqlChQjp48KAupPuRsLCwMC1fvlwNGjTI9B3pl39btWqVmjZt6nS9JBUsWFClS5dWoUKFlJSUpNOnT9ud7dOoUSMtXbrUJ/439scpfgAAAAD8w2+/SffcIzlasOL++6U5c6TgYM/1pd27zcaOHbNfU7CgtGiRGQQBAAD4AH/8Xm6emMkjSaVLl1blypUlSfHx8frll1+83JHvCAgI0Jw5c/Twww/bXE9OTtaBAwe0devW6wKeYsWKacmSJU4FPK5y6dIl7d27V5s2bdLWrVszDHgCAgI0ePBg/fzzzz4R8AAAAACAu2zYILVu7Tjg6dDBCwHPhg1Sw4aOA57ixaXVqwl4AAAAcijPhDySVLx4cevnv/76y4ud+J7Q0FB98803+u6771SrVi27deHh4erXr592797tcCZOTk2ZMkUPP/ywypcv71R9qVKl1L9/f+3du1djx45VUFCQ23oDAAAAAG9bv96cKHP5sv2aTp2k2bM9HPBI0tWrUny8/fsVKki//irVru25ngAAAHKpfN5uwJNiYmKsn+Pi4rzYie/q3LmzOnfurH379mnjxo06fvy4EhMTVbhwYd1yyy1q0KCBQkNDszxuVlcFfPLJJ/Xkk09Kks6ePas9e/bo8OHDio6OVmxsrAIDA1WkSBFFRkaqdu3aqlKlSpZ7AgAAAAB/tG6d1KaNlOavuNd54AFp1izJKz//1qiR9O23ZsqUkmJ775ZbpKVLJSd/oA8AAACO5ZmQ58KFC/r777+te70ULlzYuw35uBtuuEE33HCDt9uQZC4N17BhQzVs2NDbrQAAAACAV/36q9S2reOAp3Nn6ZtvvBTwpLr/fmnKFKlPn2vX6tUz9+ApVsx7fQEAAOQyeWa5tnHjxunq1avWGSWp+/MAAAAAAOAP1q7NfAZPly4+EPCk6t1bGjPG/HzvvdKKFQQ8AAAALpbrZ/KkpKRo3LhxGjt2rCwWiwzDUEhIiJo0aeLt1gAAAAAAcMovv5g5SWys/ZquXaUZM6R8vvQ3/VdekSpVMtMnn0ieAAAAchdf+qPfdX755ZdsPRcfH6/Tp09r69atmjt3ro4ePWqdwWOxWNS7d2+FhYW5slUAAAAAANxizRoz4HG0tezDD0tffeVjAY8kWSxS9+7e7gIAACDX8rU//tlo2rSpdQ+d7Eob7hiGoapVq2r06NGuaA8AAAAAALdatUpq185xwNOtmzR9ugcDntOnpYIFJX54EgAAwOv8Yk8ewzCydUiyhkSGYah27dpavny5ihQp4s0vBwAAAACATK1cKd13n+OAp3t3Dwc8e/dK9epJjzwiJSd76KUAAACwx+dDntSwJrvPpoY7kydP1qZNm1SxYkUXdgcAAAAAgOv9/LM5gyc+3n7No496OOBZv16qX186dEiaO1caOFDKwd/ZAQAAkHM+vVzbiBEjsvyMxWJRaGioChYsqIoVK6pOnToqWbKkG7oDAAAAAMD1VqyQ2reXrlyxX/PYY9IXX0iBgR5qau5cc9pQ2qY+/FAqX1566SUPNQEAAID0cl3IAwAAAACAv1q2TOrQwXHA07OnNHWqBwOeSZOk//4341k7gwdLZcuaARAAAAA8zueXawMAAAAAIC9YulS6/37HAc/jj3sw4ElJkYYMkZ57zvGybB99ZNYCAADA43x6Jg8AAAAAAHnBTz9JHTtKCQn2a3r1kj79VArwxI9rJiSYL5w503FdmzbSnDkeagoAAADp8acwAAAAAAC86McfzSXaHAU8vXt7MOC5cEG6997MA54nnpAWLJAiIjzQFAAAADJCyAMAAAAAgJcsWWLO4ElMtF/Tp480ZYqHAp5Dh6T69aWVKx3XDR9urhsXFOSBpgAAAGAPy7UBAAAAAOAFixZJnTs7Dnieekr6+GMPBTybNknt20tRUfZrAgPNhp580gMNAQAAIDNeCXl69erljddaWSwWTZ061as9AAAAAADyroULzYAnKcl+Td++0qRJHgp4fvhBeuQR6coV+zX580uzZ0v33eeBhgAAAOAMr4Q806ZNk8Vi8carZRgGIQ8AAAAAwGsWLJAefNBxwPPMM9JHH3kg4DEM6d13pZdeMj/bU7y4tHixVLeumxsCAABAVrBcGwAAAAAAHjJvntS1q+OA59lnpQ8/lNz+s5FXr0r//a/0ySeO626+2Qx4qlZ1c0MAAADIKq+FPIajnxACAAAAACCXmTvXDHiuXrVf89xz0gcfeCDguXxZeugh6ccfHdc1aWIu5Va0qJsbAgAAQHZ4JeQ5ePCgN14LAAAAAIBX/PCDmak4Cnief156/30PBDzHjpn76uzY4bjuscekTz+VQkLc3BAAAACyyyshT8WKFb3xWgAAAAAAPO6776SHH5aSk+3X9O8vvfeeBwKevXul5s2lEycc140cKQ0f7oGGAAAAkBPsyQMAAAAAgJvMmSN16+Y44Bk4UHrnHQ/lKeXLS6VL2w95goKkqVPNWTwAAADweQHebgAAAAAAgNxo9uzMA54XXvBgwCNJ+fNL8+ebQU96RYpIy5cT8AAAAPgRQh4AAAAAAFxs1iype3fHAc+gQdKECV5YEa1sWWnBAik09Nq1KlWkDRukJk083AwAAABygpAHAAAAAAAX+uYb6ZFHHAc8gwdL48Z5ccubO++UvvzS/Hz33dJvv0k33+ylZgAAAJBd7MkDAAAAAICLzJxprnaWkmK/5uWXpbfe8mLAk6prV3MPnjZtpLAwLzcDAACA7CDkAQAAAADABb7+WurZ03HA88or0pgxPhDwpOrUydsdAAAAIAf8LuT566+/tH79em3dulVnzpzRhQsXlJCQkKUxLBaLfv75Zzd1CAAAAADIa776ygx4DMN+zWuvSa+/7saAxzCkd9+VmjeXatd200sAAADgS/wm5Jk/f77efvttbdq0KUfjGIYhi8/8yBQAAAAAwN99+aX0xBOOA56hQ6XRo90Y8Fy5Ij39tDR9ulSunLRpk1S6tJteBgAAAF/h8yFPcnKynn76aX3xxReSbEMaI82foDMKbjK7DwAAAABATkybJvXq5TjgGT5cGjnSjQHP8ePmsmu//26eHzsmdeggrVnDXjsAAAC5XIC3G8jMgAED9Pnnn9sENoZhWMOe1CP1Wtojo/sAAAAAALjC559nHvCMGCGNGuXGgGfDBunOO68FPKl+/z3z6UUAAADwez4d8qxZs0aTJk2yBjXBwcEaOnSo/vrrL125csUmtFmxYoWuXLmiEydOaPny5XrllVdUokQJa0316tW1detWpaSkKDk52VtfEgAAAAAgF5g6VerTx3GGMnKkebi1iaZNpVOnMr7/7bfmGnEAAADItXw65HnrrbckmTN3AgMDtXDhQo0ePVo33XSTgoODr6sPDg5WqVKl1KJFC40ZM0aHDx/WoEGDJEl79uxR48aNtXbtWo9+DQAAAACA3OXTTzMPeEaPNmfxuEVSkvTf/5pNJCbarwsJkW680U1NAAAAwBf4bMgTGxurn3/+2TqL56mnnlLLli2zNEZwcLDGjRunyZMnyzAMXb58WZ06ddLp06fd1DUAAAAAIDebMkV66inHNW+8IQ0b5qYGoqOl1q2ljz5yXFemjPTLL1L37m5qBAAAAL7AZ0Oe3377TcnJydbl1vr27ZvtsZ5++ml16dJFknT+/HkNc9uftgEAAAAAudX//ic9/bTjmjFjpNdec1MD27ZJdetKq1c7rrv7bmnzZumuu9zUCAAAAHyFz4Y8hw8ftn4uVKiQbr31Vof1CQkJDu+/9u+fsg3D0IwZM3TlypWcNwkAAAAAyBM+/ljK7GcP33pLevVVNzUwe7bUoIGU5u/KGerdW1q1Sipd2k2NAAAAwJf4bMhz7tw5SZLFYlGFChUyrMmXL5/1c2ahTc2aNVWyZElr7fr1613UKQAAAAAgN5s0SerXz3HN2LHSkCFuePnVq9KgQdJDD0lxcfbrAgOlDz80NwwKCXFDIwAAAPBFPhvyXL161fo5PDw8w5oCBQpYl3OLiorKdMxy5cpZP+/duzeHHQIAAAAAcruPPpKee85xzbhx0uDBbnj56dNSy5bSO+84rouMlFasMBu1WNzQCAAAAHyVz4Y8hQoVsn6OiYnJsKZw4cLWz4czm7IuKSUlxfr5woUL2e4NAAAAAJD7ffCB9N//Oq6ZMEF66SU3vPy336Q6daQ1axzX3X679PvvUtOmbmgCAAAAvs5nQ57UJdoMw7Au3ZZetWrVrJ83btzocLzk5GT9888/svz7U00hTF8HAAAAANgxcaLUv7/jmnfflV580cUvNgxp8mSpcWPpxAnHtV27SuvWSZUqubgJAAAA+AufDXlq1Khh/XzixIkMZ/PUqlVLkhkE/frrrzrh4A/Ac+fOVUxMjHV5t9JsQgkAAAAAyMB770kDBmReM3Cgi18cFyc9/rj07LNSUpL9OotFevNNadYsyc7y5gAAAMgbfDbkqVSpkkqVKmU937x583U1HTt2lCRZLBZdvXpVzzzzjM1ePqkOHDig/v37W2fxSFKDBg1c3zQAAAAAwK+9+670wguOayZOzDwEyrKUFHP/nenTHdcVKyb99JP0yivsvwMAAADfDXkkqXnz5tbPS5Ysue5+3bp1ddttt1nPFy1apDvuuEMffvihli1bpkWLFmnIkCGqU6eOTp06JcMwZLFY1LhxY+tycAAAAAAASOb+Opktv/bBB9Lzz7vh5QEBUt++jmvuuEP64w+pdWs3NAAAAAB/5NMhzwMPPGD9PGfOHOtSa2l99NFH1s+GYWjnzp0aMGCA2rZtqw4dOmj8+PG6dOmStSYoKEhjx451b+MAAAAAAL8yfrz00kuOaz76SPrvf93YRI8eUr9+Gd/r1Uv69VepYkU3NgAAAAB/49Mhz3333ac6deqoevXqioiI0Pr166+radSokSZPnizJXLbNYrHIMAzrkXrdMAwFBQVpypQpuuuuuzz6dQAAAAAAfNfYsdLgwY5rJk0yt8pxu/fek+rVu3YeHCxNmSJNnSqFhnqgAQAAAPiTfN5uwJGQkJAM9+JJ7+mnn9ZNN92kF198Udu2bbO5lxr03H333ZowYYLuvvtud7QKAAAAAPBDb79tbm/jyMcfZ76SmssEB0vffSfVqSOFhJif+UFFAAAA2OHTIU9WNGvWTFu2bNE///yj3377TadPn5ZhGCpVqpTq16+vqlWrertFAAAAAIAPefNN6bXXHNd88on09NOe6ceqbFlp8WJzabbixT38cgAAAPiTXBPypLrxxht14403ersNAAAAAIAPe+MNadgwxzVTpkhPPumiF0ZFmbN0Chd2rv7OO130YgAAAORmPr0nDwAAAAAArvb665kHPJ9+6sKA55dfpNq1pV69pH+XFAcAAABcwadDni1btni7BQAAAABALjJqlDR8uP37Fos0darUp48LXpaSIo0dKzVvLp04Ic2dK02c6IKBAQAAAJNPhzx33nmnatasqXfeeUenTp3ydjsAAAAAAD82cqR52JMa8PTq5YKXnT4t3XuvNGSIlJx87fpLL0m//eaCFwAAAAA+HvJI0q5duzR48GCVL19e9957r2bPnq2EhARvtwUAAAAA8BOGIY0YYc7iscdikb74QnriCRe8cOlSqWZN89f0rl6VHnpIOnfOBS8CAABAXufzIY8kGYah5ORkLV26VN26dVOpUqXUt29frV+/3tutAQAAAAB8mGGYy7ONHm2/xmKRpk2TevbM4csSE82ZOm3aSFFR9uuOHJHeeCOHLwMAAAB8PORp0qSJ9bPFYpFkBj4XL17Up59+qkaNGummm27SmDFjdOTIEW+1CQAAAADwQYYhDR3qOE8JCJCmT5d69Mjhy/btkxo0kCZMyLy2b1/pzTdz+EIAAADAx0OeVatW6eDBgxo1apRuuOEGGYYhyTbw2bdvn4YPH64qVaqoefPmmj59umJjY73ZNgAAAADAywxDeu01x1lKasDz6KM5fNmMGVLt2tLmzY7rwsOlmTOljz+WQkNz+FIAAADAx0MeSapQoYKGDRumvXv3at26dXrqqadUqFAhm8DHMAylpKRozZo1euKJJ1SqVCk9/vjjWrlypZe7BwAAAAB4mmFIr7wivfWW/ZqAAOmrr6RHHsnBiy5fNtd4e/RRKSbGcW2dOtKWLVK3bjl4IQAAAGDL50OetO6++2598sknOnXqlL799lvdd999CgwMlGQ7uyc2NlZfffWVWrVqpYoVK2rYsGH6559/vNk6AAAAAMADDEN6+WVp7Fj7NQEB5uSb7t1z8KI//pDuuMOcCpSZF16Q1q+XbropBy8EAAAArudXIU+q4OBgdenSRQsXLtTx48f1zjvv6Pbbb89w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nTlzptw57u7u6tOnj1599VX16dPH6r6Ki4sVGRmpd955R8eOHatwrqenp7p166bRo0dr+vTp8vLysvp1bJGXl6elS5dq+fLlOnXqVLlz6tSpo379+ikiIkK9e/eucL3K3K0ze/ZsRURE2Hzdz0aPHq1//etfRj106FB9+umnVvWSmZmpLl26mH6t//KXv+ill16qdD8AAABwDrf+x9IAAAAAOK2JEyea6jVr1ti8RkJCgnbt2mXUHTp0KDfgOXbsmFq1aqXw8HDt3LmzwoBHktLT07Vo0SJ16NBBn376qc19OatNmzYpJCREERERNwx4JKmoqEg7d+5U3759NXXqVBUWFt507fT0dGP+zQIeScrPz9dXX32l3//+90pOTrbpfVjru+++U4cOHRQeHn7DgEeSCgsLtX37dvXp00dTpkxRQUFBtfRTWZGRkQoKCjLqzz77TK+99ppV1/761782/VoPGjRIs2bNsnuPAAAAqHmEPAAAAAAc5p577lH79u2Nes+ePTbdzSL9FAxdv0FB6eDoZ/n5+WW21vL09FRISIi6dOmi0NBQ/eIXv1CdOuZdrTMzM/XQQw9px44dNvXljFasWKFRo0YpNTXVNF6/fn21b99eoaGhatu2bZlt6lasWKExY8ZUuDVZSUmJRo4cqb1795rGLRaLAgMD1bVrV917773q0KGD/P397faeKnLo0CH16dNHp0+fNo17eHjoF7/4hbp3717uXVqrVq3SiBEjlJ+fXyN9WqNBgwZat26d6ffnK6+8oq+++qrC65YvX66YmBijbtq0qf7xj39wdhAAAMAtgpAHAAAAgENdH8qUlJTo/ffft+n66+e7ublpwoQJFc7v16+fFi9erOPHj+vq1as6efKkvvnmG+3fv1/x8fHKysrSRx99pNDQUOOa4uJiTZgwQdnZ2Tb15ky2b9+uZ555RkVFRcbYww8/rJ07dyozM1NxcXHav3+/fvzxR128eFELFiyQj4+PMTc2NrbCO0diYmK0Z88eo/b29tbChQuVkpKi5ORkff3119q3b5++++47paenKzExUatXr1ZYWFiZYM0esrKyNHbsWKWnpxtj9evX12uvvaYLFy4oPj5eBw8eVHJyso4ePapRo0aZrt+8ebP+9Kc/lbv21q1bja/w8HDTc+Hh4abnf/568sknq/ye7rvvPs2dO9eoCwsL9eijjyojI6Pc+d9++61mzJhh1BaLRe+//76aNm1a5V4AAADgHDiTBwAAAIBDJScnq1WrViouLpYktW3bVj/++KNV13755Zfq1auXUQ8dOlSbN28ud25qaqouXryojh07WrV2cXGxpk6dqsjISGNs2bJleuaZZyq8zhnP5MnIyFD79u114cIFST+FYX//+981ZcqUCl8jLi5O/fv318WLFyX9dOdTQkKCmjVrVmbuuHHj9OGHHxr1559/rgEDBlj1XpKSktSgQQPddtttVs23xm9/+1u9/fbbRu3n56cdO3aoS5cuN7zmlVde0bx584zazc1NBw8eVNeuXW94TVRUlCZPnmzUq1at0qRJk6rWfAVKSkr0wAMP6LPPPjPGwsLC9M9//tM0LycnR927d9f3339vjM2aNUt//etfq603AAAA1Dzu5AEAAADgUC1atNCgQYOM+uTJk/ryyy+turb0GT432qpNkpo0aWJ1wCP99AP+d955RyEhIcbYqlWrrL7emSxfvtwIeCRp3rx5Nw14pJ/ON4qKijLq/Px8U3Byvfj4eONxu3btrA54JOn222+3a8CTkZGh9957zzS2cuXKCgMeSZo7d64eeOABoy4uLtbixYvt1pc9WCwWrVmzxhS0/etf/9I777xjmvfb3/7WFPDcd999+vOf/1xjfQIAAKBmEPIAAAAAcLjS4Uzp8KY8eXl52rBhg1H7+vqW2XKrqjw9PTV27FijPnz4sHJzc+36GtWtqKhIS5cuNepWrVpp5syZVl//4IMPmsKR0neM/Oz6/y4eHh6V6NR+oqOjlZOTY9S9evXS6NGjrbp20aJFpvqDDz5QZmamXfurqiZNmugf//iH6eykmTNn6ujRo5J+ev/Xh1z+/v5lzvMBAADArYGQBwAAAIDD/epXv5Kvr69Rb9iwQXl5eRVes3HjRtNZJOPGjZOXl5fde2vdurXxuLCwUMePH7f7a1Sno0eP6vz580Y9fvx4m0OYIUOGGI9/+OEHXbp0qcycwMBA43FcXJwOHz5ciW7tY9euXabamruWftauXTv17NnTqPPz87Vv3z679WYvAwcO1Msvv2zUeXl5GjdunI4cOaJp06aZ5q5cuVJBQUE13SIAAABqACEPAAAAAIfz8vLSuHHjjDojI0MbN26s8JrVq1eb6oq2aistJydH69ev19SpU9WjRw8FBgbKx8dHbm5uslgspq+pU6eari0v4HBme/bsMdXdu3e3eY1WrVqZ6uu3AfvZ4MGDjcdFRUUaNmyYIiMjTXfU1JT9+/eb6vvvv9+m6wcOHGiqnTHkkX46l6l3795GHR8fr3vvvVdZWVnG2DPPPKOwsDBHtAcAAIAaQMgDAAAAwCnYsmVbamqq6eD5kJAQ0w+7b6SgoEALFixQs2bN9Oijj2rFihXav3+/UlJSlJ2drZKSkpuucf3dQ66gdCAzbty4MkHWzb6effZZ0xqXL18u8zrTpk1T06ZNjTo1NVVPP/20GjdurJEjR+rNN9/UwYMHVVBQUD1v9P8rKSlRUlKSUfv6+io4ONimNTp16mSqExMT7dGa3bm7u2vdunVq1KiRMZafn288vvvuu8tsPwcAAIBbCyEPAAAAAKfQu3dvhYSEGPXmzZuVmppa7ty1a9eqsLDQqJ988smbrp+bm6thw4Zp1qxZpjsdbHWzbeScTVpamt3XLO+MmoYNG2rTpk1q3ry5aTwnJ0cbN27UjBkzFBoaqoYNG+rBBx9UZGRktQRmmZmZKi4uNurrAxBrBQQEmOr09PQq91VdWrZsqVWrVpUZ9/b21oYNG1SvXj0HdAUAAICaQsgDAAAAwGlcH9YUFhYqOjq63HnX3+VjsVisCnmmT5+uzz//3DTWuHFjjR07VnPnztXq1av173//W5s3b9bWrVuNr/Dw8Eq+G+dQHUHK9SHK9bp3767jx48rPDxcDRs2LHdOdna2Pv30Uz399NNq1aqVIiIi7Hp3T3Z2tqn29va2eY3S11QlFKwJV69eLTMWFBRkOk8KAAAAt6Y6jm4AAAAAAH725JNPKiIiwtg2bc2aNXrhhRdMc7799lsdOXLEqPv27XvT7biOHDliOsPHw8NDr732mqZPny5PT88Krz116pRN78HZ1K9f31TPnz9f3bp1q9KaHTt2vOFzDRs21Guvvaa5c+dq586d2rFjh3bt2qVDhw6VCXOysrI0Z84cbdu2TVu2bCnTa2Xcdtttprq8AORmSl/j4+NTpZ6q06lTp8qcGyVJcXFxCg8P15IlSxzQFQAAAGoKIQ8AAAAApxEcHKy+fftq165dkqTDhw/r+PHjuvPOO40514c1UtmzfMrzwQcfmM7bmTNnTpnw6EbKO3/GXiwWS6WvzcnJsWpe6a3HWrdurUGDBlX6da3l6empIUOGaMiQIZJ+2i5v3759+uSTTxQdHa3z588bc/fu3avf//73WrZsWZVf18/PT25ubsbdRpXZru7SpUumukGDBlXuqzoUFBRo/PjxunLlSrnPL126VIMGDdKIESNquDMAAADUFLZrAwAAAOBUSoc214c6RUVFWrt2rVHXr19fY8aMuema+/btMx67ublp2rRpVvfz3XffWT3XVtefl5Kbm2vTtRcvXrRqXuktu06ePGnT69iLl5eXBgwYoIULF+rs2bP6wx/+YHo+MjLyhmGFLSwWi26//XajvnLlis6ePWvTGkePHjXVQUFBVe6rOsyaNUuHDh0y6k6dOulvf/ubac6UKVN07ty5mm4NAAAANYSQBwAAAIBTGTNmjGnbrrVr16qoqEiStGXLFl24cMF4LiwszKqttP7zn/8Yjxs3bmz1nRnFxcXGXUXVwdfX13icnp5u09k0Bw8etGregAEDTHXpc4kcwcPDQ3PnzlXv3r2NsYKCAu3fv98u6/fo0cNU2/qeS88vvZ4z+OSTT7R48WKj9vb21oYNGzRt2jQ99thjxnhaWpoef/xx43sIAAAAtxZCHgAAAABOxcfHR6NHjzbqlJQUbd26VVLltmqTZNqqLT8/3+peNm7cWK13QVx/h0hBQYGOHz9u1XXHjx+3+g6j0NBQU6j1+eefKy4uzrZGq0mvXr1Mdelt0iqrX79+pjoqKsrqa0+cOKG9e/cadd26dXXvvffapS97SUlJ0aRJk0y/r99++2398pe/lCQtX75cbdu2NZ7bvXu3/vznP9d4nwAAAKh+hDwAAAAAnE7p8GbNmjXKzMxUbGysMdayZUvdf//9Vq3XrFkz43F6erpVIUd2drZmzpxpZceV07VrV1P9wQcfWHVd6a3OKuLh4WE6f6ikpERTp0616a6h6lJdZ988+uij8vb2Nuo9e/boo48+sura0r/m48aNk5+fn136sofi4mI9/vjjpu36Hn/8cU2aNMmofXx8tH79enl6ehpjc+fO1e7du2uyVQAAANQAQh4AAAAATmfAgAGmc1U++ugjRUZG6tq1a8bYE088ITc36/5J07NnT1P94osvqri4+Ibzc3JyFBYWptOnT9vYuW0efPBBU7106VL9+OOPFV7zxz/+URs3brTpdZ5//nk1bdrUqL/44guNGTNGmZmZVq9x9epVLVmyRCtXrizz3JUrV/T4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",
      "text/plain": [
       "<Figure size 1800x1200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "genu=GELU()\n",
    "def relu(x):\n",
    "    y=torch.zeros(len(x))\n",
    "    for i in range(len(x)):\n",
    "        if x[i]>0:\n",
    "            y[i]=x[i]\n",
    "    return y                 \n",
    "xs = torch.linspace(-6,6,300)\n",
    "ys=relu(xs)\n",
    "gs=genu(xs)\n",
    "fig, ax = plt.subplots(figsize=(6,4),dpi=300)\n",
    "plt.xlim(-3,3)\n",
    "plt.ylim(-0.5,3.5)\n",
    "plt.plot(xs, ys, color = 'blue', label=\"ReLU\")\n",
    "plt.plot(xs, gs, \"--\", color = 'red', label=\"GELU\")\n",
    "plt.legend(fontsize=15)\n",
    "plt.xlabel(\"values of x\")\n",
    "plt.ylabel(\"values of $ReLU(x)$ and $GELU(x)$\")\n",
    "plt.title(\"The ReLU and GELU Activation Functions\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6a73649b",
   "metadata": {},
   "source": [
    "## 2.3.\tCausal self-attention"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "42cda9e4",
   "metadata": {},
   "outputs": [],
   "source": [
    "# define hyperparameters\n",
    "class Config():\n",
    "    def __init__(self):\n",
    "        self.n_layer = 48\n",
    "        self.n_head = 25\n",
    "        self.n_embd = 1600\n",
    "        self.vocab_size = 50257\n",
    "        self.block_size = 1024 \n",
    "        self.embd_pdrop = 0.1 \n",
    "        self.resid_pdrop = 0.1 \n",
    "        self.attn_pdrop = 0.1 \n",
    "        \n",
    "# instantiate a Config() class\n",
    "config=Config()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "3655fc42",
   "metadata": {},
   "outputs": [],
   "source": [
    "class CausalSelfAttention(nn.Module):\n",
    "    def __init__(self, config):\n",
    "        super().__init__()\n",
    "        self.c_attn = nn.Linear(config.n_embd, 3 * config.n_embd)\n",
    "        self.c_proj = nn.Linear(config.n_embd, config.n_embd)\n",
    "        self.attn_dropout = nn.Dropout(config.attn_pdrop)\n",
    "        self.resid_dropout = nn.Dropout(config.resid_pdrop)\n",
    "        self.register_buffer(\"bias\", torch.tril(torch.ones(\\\n",
    "                   config.block_size, config.block_size))\n",
    "             .view(1, 1, config.block_size, config.block_size))\n",
    "        self.n_head = config.n_head\n",
    "        self.n_embd = config.n_embd\n",
    "\n",
    "    def forward(self, x):\n",
    "        B, T, C = x.size() \n",
    "        q, k ,v  = self.c_attn(x).split(self.n_embd, dim=2)\n",
    "        hs = C // self.n_head\n",
    "        k = k.view(B, T, self.n_head, hs).transpose(1, 2) \n",
    "        q = q.view(B, T, self.n_head, hs).transpose(1, 2) \n",
    "        v = v.view(B, T, self.n_head, hs).transpose(1, 2) \n",
    "\n",
    "        att = (q @ k.transpose(-2, -1)) *\\\n",
    "            (1.0 / math.sqrt(k.size(-1)))\n",
    "        att = att.masked_fill(self.bias[:,:,:T,:T] == 0, \\\n",
    "                              float('-inf'))\n",
    "        att = F.softmax(att, dim=-1)\n",
    "        att = self.attn_dropout(att)\n",
    "        y = att @ v \n",
    "        y = y.transpose(1, 2).contiguous().view(B, T, C)\n",
    "        y = self.resid_dropout(self.c_proj(y))\n",
    "        return y"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "009d7b1c",
   "metadata": {},
   "source": [
    "## 2.4.\tConstruct the GPT-2XL model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "64b84f7b",
   "metadata": {},
   "outputs": [],
   "source": [
    "class Block(nn.Module):\n",
    "    def __init__(self, config):\n",
    "        super().__init__()\n",
    "        self.ln_1 = nn.LayerNorm(config.n_embd)\n",
    "        self.attn = CausalSelfAttention(config)\n",
    "        self.ln_2 = nn.LayerNorm(config.n_embd)\n",
    "        self.mlp = nn.ModuleDict(dict(\n",
    "            c_fc   = nn.Linear(config.n_embd, 4 * config.n_embd),\n",
    "            c_proj = nn.Linear(4 * config.n_embd, config.n_embd),\n",
    "            act    = GELU(),\n",
    "            dropout = nn.Dropout(config.resid_pdrop),\n",
    "        ))\n",
    "        m = self.mlp\n",
    "        self.mlpf=lambda x:m.dropout(m.c_proj(m.act(m.c_fc(x)))) \n",
    "\n",
    "    def forward(self, x):\n",
    "        x = x + self.attn(self.ln_1(x))\n",
    "        x = x + self.mlpf(self.ln_2(x))\n",
    "        return x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "3ccdd1ae",
   "metadata": {},
   "outputs": [],
   "source": [
    "class GPT2XL(nn.Module):\n",
    "    def __init__(self, config):\n",
    "        super().__init__()\n",
    "        self.block_size = config.block_size\n",
    "        self.transformer = nn.ModuleDict(dict(\n",
    "            wte = nn.Embedding(config.vocab_size, config.n_embd),\n",
    "            wpe = nn.Embedding(config.block_size, config.n_embd),\n",
    "            drop = nn.Dropout(config.embd_pdrop),\n",
    "            h = nn.ModuleList([Block(config) \n",
    "                               for _ in range(config.n_layer)]),\n",
    "            ln_f = nn.LayerNorm(config.n_embd),))\n",
    "        self.lm_head = nn.Linear(config.n_embd,\n",
    "                                 config.vocab_size, bias=False)      \n",
    "    def forward(self, idx, targets=None):\n",
    "        b, t = idx.size()\n",
    "        pos = torch.arange(0,t,dtype=torch.long).unsqueeze(0)\n",
    "        tok_emb = self.transformer.wte(idx) \n",
    "        pos_emb = self.transformer.wpe(pos) \n",
    "        x = self.transformer.drop(tok_emb + pos_emb)\n",
    "        for block in self.transformer.h:\n",
    "            x = block(x)\n",
    "        x = self.transformer.ln_f(x)\n",
    "        logits = self.lm_head(x)\n",
    "        loss = None\n",
    "        if targets is not None:\n",
    "            loss=F.cross_entropy(logits.view(-1,logits.size(-1)),\n",
    "                           targets.view(-1), ignore_index=-1)\n",
    "        return logits, loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "e0b8ae7f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "number of parameters: 1557.61M\n"
     ]
    }
   ],
   "source": [
    "model=GPT2XL(config)\n",
    "num=sum(p.numel() for p in model.transformer.parameters())\n",
    "print(\"number of parameters: %.2fM\" % (num/1e6,))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "a912defe",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GPT2XL(\n",
      "  (transformer): ModuleDict(\n",
      "    (wte): Embedding(50257, 1600)\n",
      "    (wpe): Embedding(1024, 1600)\n",
      "    (drop): Dropout(p=0.1, inplace=False)\n",
      "    (h): ModuleList(\n",
      "      (0-47): 48 x Block(\n",
      "        (ln_1): LayerNorm((1600,), eps=1e-05, elementwise_affine=True)\n",
      "        (attn): CausalSelfAttention(\n",
      "          (c_attn): Linear(in_features=1600, out_features=4800, bias=True)\n",
      "          (c_proj): Linear(in_features=1600, out_features=1600, bias=True)\n",
      "          (attn_dropout): Dropout(p=0.1, inplace=False)\n",
      "          (resid_dropout): Dropout(p=0.1, inplace=False)\n",
      "        )\n",
      "        (ln_2): LayerNorm((1600,), eps=1e-05, elementwise_affine=True)\n",
      "        (mlp): ModuleDict(\n",
      "          (c_fc): Linear(in_features=1600, out_features=6400, bias=True)\n",
      "          (c_proj): Linear(in_features=6400, out_features=1600, bias=True)\n",
      "          (act): GELU()\n",
      "          (dropout): Dropout(p=0.1, inplace=False)\n",
      "        )\n",
      "      )\n",
      "    )\n",
      "    (ln_f): LayerNorm((1600,), eps=1e-05, elementwise_affine=True)\n",
      "  )\n",
      "  (lm_head): Linear(in_features=1600, out_features=50257, bias=False)\n",
      ")\n"
     ]
    }
   ],
   "source": [
    "print(model)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "be6ee376",
   "metadata": {},
   "source": [
    "# 3.\tLoad up pre-trained weights and generate text\n",
    "## 3.1. \tLoad up pre-trained parameters in GPT-2XL"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "b659aad7",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install the transformers library developed by Hugging Face\n",
    "!pip install transformers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "1ec5c98c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GPT2LMHeadModel(\n",
      "  (transformer): GPT2Model(\n",
      "    (wte): Embedding(50257, 1600)\n",
      "    (wpe): Embedding(1024, 1600)\n",
      "    (drop): Dropout(p=0.1, inplace=False)\n",
      "    (h): ModuleList(\n",
      "      (0-47): 48 x GPT2Block(\n",
      "        (ln_1): LayerNorm((1600,), eps=1e-05, elementwise_affine=True)\n",
      "        (attn): GPT2Attention(\n",
      "          (c_attn): Conv1D()\n",
      "          (c_proj): Conv1D()\n",
      "          (attn_dropout): Dropout(p=0.1, inplace=False)\n",
      "          (resid_dropout): Dropout(p=0.1, inplace=False)\n",
      "        )\n",
      "        (ln_2): LayerNorm((1600,), eps=1e-05, elementwise_affine=True)\n",
      "        (mlp): GPT2MLP(\n",
      "          (c_fc): Conv1D()\n",
      "          (c_proj): Conv1D()\n",
      "          (act): NewGELUActivation()\n",
      "          (dropout): Dropout(p=0.1, inplace=False)\n",
      "        )\n",
      "      )\n",
      "    )\n",
      "    (ln_f): LayerNorm((1600,), eps=1e-05, elementwise_affine=True)\n",
      "  )\n",
      "  (lm_head): Linear(in_features=1600, out_features=50257, bias=False)\n",
      ")\n"
     ]
    }
   ],
   "source": [
    "from transformers import GPT2LMHeadModel\n",
    "\n",
    "model_hf = GPT2LMHeadModel.from_pretrained('gpt2-xl')\n",
    "sd_hf = model_hf.state_dict()  \n",
    "print(model_hf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "43ab7cc0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1600, 6400])\n"
     ]
    }
   ],
   "source": [
    "print(model_hf.transformer.h[0].mlp.c_fc.weight.shape) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "a20bf564",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([6400, 1600])\n"
     ]
    }
   ],
   "source": [
    "print(model.transformer.h[0].mlp.c_fc.weight.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "08062972",
   "metadata": {},
   "outputs": [],
   "source": [
    "keys = [k for k in sd_hf if not k.endswith('attn.masked_bias')] "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aba706c3",
   "metadata": {},
   "source": [
    "We'll also extract the state dictionary for the GPT2 model we just created ourselves:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "8a6a600a",
   "metadata": {},
   "outputs": [],
   "source": [
    "sd=model.state_dict()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "62249b0d",
   "metadata": {},
   "outputs": [],
   "source": [
    "transposed = ['attn.c_attn.weight', 'attn.c_proj.weight',\n",
    "              'mlp.c_fc.weight', 'mlp.c_proj.weight']\n",
    "for k in keys:\n",
    "    if any(k.endswith(w) for w in transposed):\n",
    "        # special treatment for Conv1D weights\n",
    "        with torch.no_grad():\n",
    "            sd[k].copy_(sd_hf[k].t())\n",
    "    else:\n",
    "        with torch.no_grad():\n",
    "            sd[k].copy_(sd_hf[k])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "39e27a43",
   "metadata": {},
   "source": [
    "## 3.2. \tDefine a generate() function to produce text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "e8487434",
   "metadata": {},
   "outputs": [],
   "source": [
    "model.eval()\n",
    "def sample(idx, max_new_tokens, temperature=1.0, top_k=None):\n",
    "    for _ in range(max_new_tokens):\n",
    "        # if the text is more than 1024 tokens, trim it\n",
    "        if idx.size(1) <= config.block_size:\n",
    "            idx_cond = idx  \n",
    "        else:\n",
    "            idx_cond = idx[:, -config.block_size:]\n",
    "        # predict the logits for the index in sequence\n",
    "        logits, _ = model(idx_cond)\n",
    "        # pluck the logits at the final step; apply temperature \n",
    "        logits = logits[:, -1, :] / temperature\n",
    "        # optionally crop the logits to only the top k options\n",
    "        if top_k is not None:\n",
    "            v, _ = torch.topk(logits, top_k)\n",
    "            logits[logits < v[:, [-1]]] = -float('Inf')\n",
    "        # apply softmax to get probabilities\n",
    "        probs = F.softmax(logits, dim=-1)\n",
    "        idx_next = torch.multinomial(probs, num_samples=1)\n",
    "        if idx_next.item()==tokenizer.encoder.encoder['<|endoftext|>']:\n",
    "            break\n",
    "        # append new index to sequence \n",
    "        idx = torch.cat((idx, idx_next), dim=1)\n",
    "    return idx "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "41216783",
   "metadata": {},
   "outputs": [],
   "source": [
    "def generate(prompt, max_new_tokens, temperature=1.0,\n",
    "             top_k=None):\n",
    "    if prompt == '':\n",
    "        x=torch.tensor([[tokenizer.encoder.encoder['<|endoftext|>']]],\n",
    "                         dtype=torch.long)\n",
    "    else:\n",
    "        x = tokenizer(prompt)\n",
    "    y = sample(x, max_new_tokens, temperature, top_k)\n",
    "    out = tokenizer.decode(y.squeeze())\n",
    "    print(out)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "8f4e0d2d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<|endoftext|>Feedback from Ham Radio Recalls\n",
      "\n",
      "I discovered a tune sticking in my head -- I'd heard it mentioned on several occasions, but hadn't investigated further.\n",
      "\n",
      "The tune sounded familiar to a tune I'd previously heard on the 550 micro. During that same time period I've heard other people's receipients drone on the idea of the DSH-94013, notably Kim Weaver's instructions in her Interview on Radio Ham; and both Scott Mcystem and Steve Simmons' concepts.\n"
     ]
    }
   ],
   "source": [
    "prompt=\"\"\n",
    "torch.manual_seed(42)\n",
    "generate(prompt, max_new_tokens=100, temperature=1.0,\n",
    "             top_k=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "8c746b60",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<|endoftext|>I've been in the hospital since my cat was discovered in a tree in downtown L.A. back in the spring. Since then, I've had a slew of procedures, multiple tests, and a full recovery. The first thing to address is the cat that was discovered in a tree, since it's become such a part of my life and the memories I share with both my wife and our son.\n",
      "\n",
      "I first met Lace when I saw her one day and was struck by how\n"
     ]
    }
   ],
   "source": [
    "# answer to exercie 11.4\n",
    "prompt=\"\"\n",
    "torch.manual_seed(42)\n",
    "generate(prompt, max_new_tokens=100, temperature=0.9,\n",
    "             top_k=40)  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "e012656c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "I went to the kitchen and said, you're not going to believe this.\n",
      "I went to the kitchen and noticed a female producer open a drawer in which was\n",
      "I went to the kitchen and asked who was going to be right there and A\n",
      "I went to the kitchen and took a small vial of bourbon and a little\n",
      "I went to the kitchen and found the bottle of wine, and poured it into\n"
     ]
    }
   ],
   "source": [
    "prompt=\"I went to the kitchen and\"\n",
    "for i in range(5):\n",
    "    torch.manual_seed(i)\n",
    "    generate(prompt, max_new_tokens=10, temperature=1.0,\n",
    "                 top_k=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "730313c8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Lexington is the second largest city in the state of Kentucky. It caters to those who want to make everything in tune with being with friends and enjoying a jaunt through the down to Earth lifestyle. To do so, they are blessed with several venues large and small to fill their every need while residing micro- cozy with nature within the landmarks of the city.\n",
      "\n",
      "In a moment we look at ten up and coming suchache music acts from the Lexington area to draw upon your attention.\n",
      "\n",
      "Lyrikhop\n",
      "\n",
      "\n",
      "This Lexington-based group\n"
     ]
    }
   ],
   "source": [
    "prompt=\"Lexington is the second largest city in the state of Kentucky\"\n",
    "torch.manual_seed(42)\n",
    "generate(prompt, max_new_tokens=100, temperature=1.0,\n",
    "             top_k=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "1ef09c10",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Lexington is the second largest city in the state of Kentucky. It is also the state capital. The population of Lexington was 1,731,947 in the 2011 Census. The city is well-known for its many parks, including Arboretum, Zoo, Aquarium and the Kentucky Science Center, as well as its restaurants, such as the famous Kentucky Derby Festival.\n",
      "\n",
      "In the United States, there are at least 28 counties in this state with a population of more than 100,000, according to the 2010 census.\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "\n",
    "prompt=\"Lexington is the second largest city in the state of Kentucky\"\n",
    "torch.manual_seed(42)\n",
    "generate(prompt, max_new_tokens=100, temperature=0.9,\n",
    "             top_k=50)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "0d429629",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Lexington is the second largest city in the state of Kentucky but only one-third that size. Only about 50,000 people live there, less than a fifth the density spread down to the Jay River facility. Jefferson Central Bombshells Civil Arson argument lives by Henry Nash Clark Them metro-dwellers could not remove Paul Hinze from his campus residence.\n",
      "\n",
      "On Sunday morning, two local upstarts such as Mr. Palestarelli and Mr Cassadaga might just have settled the demolition nation eystem with little more than quiet negotiations\n"
     ]
    }
   ],
   "source": [
    "# answer to exercise 11.5\n",
    "torch.manual_seed(42)\n",
    "generate(prompt, max_new_tokens=100, temperature=1.2,\n",
    "             top_k=None)   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "9d1346a5",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
